From: Kevin Day Date: Fri, 2 May 2025 00:59:26 +0000 (-0500) Subject: Update: Switch to use fll_program_signal_check_loop() and fll_program_signal_check_si... X-Git-Url: https://git.kevux.org/?a=commitdiff_plain;h=5937247dcd47ec5206327b23015b2c0e4c794d78;p=control Update: Switch to use fll_program_signal_check_loop() and fll_program_signal_check_simple(). --- diff --git a/sources/c/program/control/control/main.c b/sources/c/program/control/control/main.c index dd5a182..a59c408 100644 --- a/sources/c/program/control/control/main.c +++ b/sources/c/program/control/control/main.c @@ -59,7 +59,7 @@ int main(const int argc, const f_string_t *argv, const f_string_t *envp) { control_setting_load(arguments, &data); } - if (!control_signal_check(&data)) { + if (!macro_control_signal_check(&data.program, &data.setting.state)) { control_process(&data); } diff --git a/sources/c/program/control/main/common.c b/sources/c/program/control/main/common.c index 8c8e1c7..d1b1c08 100644 --- a/sources/c/program/control/main/common.c +++ b/sources/c/program/control/main/common.c @@ -381,7 +381,7 @@ extern "C" { for (f_number_unsigned_t number = 0; index < main->program.parameters.remaining.used; ++index) { - if (control_signal_check(main)) return; + if (macro_control_signal_check(&main->program, &main->setting.state)) return; number = main->program.parameters.remaining.array[index]; diff --git a/sources/c/program/control/main/common/define.h b/sources/c/program/control/main/common/define.h index 406925e..7f6c720 100644 --- a/sources/c/program/control/main/common/define.h +++ b/sources/c/program/control/main/common/define.h @@ -112,6 +112,17 @@ extern "C" { #define control_signal_check_failsafe_d 20000 #endif // _di_control_signal_d_ +/** + * A macro wrapping the appropriate signal check function based on threaded/non-threaded support. + */ +#ifndef _di_control_signal_check_ + #ifdef _di_thread_support_ + #define macro_control_signal_check(program, state) fll_program_signal_check_loop(program, state) + #else + #define macro_control_signal_check(program, state) fll_program_signal_check_simple(program, state) + #endif // _di_thread_support_ +#endif // _di_control_signal_check_ + #ifdef __cplusplus } // extern "C" #endif diff --git a/sources/c/program/control/main/signal.c b/sources/c/program/control/main/signal.c index d62a259..e4355ac 100644 --- a/sources/c/program/control/main/signal.c +++ b/sources/c/program/control/main/signal.c @@ -4,41 +4,6 @@ extern "C" { #endif -#if !defined(_di_control_signal_check_) && defined(_di_thread_support_) - f_status_t control_signal_check(control_main_t * const main) { - - if (!main) return F_false; - if (main->program.signal_received) return F_true; - - if (!((++main->program.signal_check) % control_signal_check_d)) { - if (F_status_set_fine(fll_program_standard_signal_received(&main->program)) == F_interrupt) { - main->setting.state.status = F_status_set_error(F_interrupt); - - return F_true; - } - - main->program.signal_check = 0; - } - - return F_false; - } -#endif // !defined(_di_control_signal_check_) && defined(_di_thread_support_) - -#if !defined(_di_control_signal_check_) && !defined(_di_thread_support_) - f_status_t control_signal_check(control_main_t * const main) { - - if (!main) return F_false; - - if (main->program.signal_received) { - main->setting.state.status = F_status_set_error(F_interrupt); - - return F_true; - } - - return F_false; - } -#endif // !defined(_di_control_signal_check_) && !defined(_di_thread_support_) - #if !defined(_di_control_signal_handler_) && !defined(_di_thread_support_) void control_signal_handler(control_main_t * const main) { diff --git a/sources/c/program/control/main/signal.h b/sources/c/program/control/main/signal.h index 26914d9..d7702dd 100644 --- a/sources/c/program/control/main/signal.h +++ b/sources/c/program/control/main/signal.h @@ -17,38 +17,6 @@ extern "C" { #endif /** - * Check to see if a signal is received. - * - * If main.signal is non-zero, then this handles the following signals: - * - F_signal_abort - * - F_signal_broken_pipe - * - F_signal_hangup - * - F_signal_interrupt - * - F_signal_quit - * - F_signal_termination - * - * There is a threaded and a non-threaded version of this. - * The non-threaded version checks periodically using control_signal_check_d and updates main->signal_check as needed. - * The threaded version checks the flag state which is set by a separate thread that is blocking until signal is received. - * - * @param main - * The main program and settings data. - * - * This does not alter main.setting.state.status. - * - * @return - * F_true on signal received. - * F_false otherwise. - * - * @see control_signal_handler() - * - * @see fll_program_standard_signal_received() - */ -#ifndef _di_control_signal_check_ - extern f_status_t control_signal_check(control_main_t * const main); -#endif // _di_control_signal_check_ - -/** * Signal handler for signals/interrupts. * * This blocks until an expected signal is recieved.