]> Kevux Git Server - kevux-tools/commitdiff
Feature: Update to utilize fll_program_signal_check_loop() and fll_program_signal_che...
authorKevin Day <Kevin@kevux.org>
Thu, 10 Apr 2025 02:32:06 +0000 (21:32 -0500)
committerKevin Day <Kevin@kevux.org>
Thu, 10 Apr 2025 02:32:06 +0000 (21:32 -0500)
Update to utilize the newly added `fll_program_signal_check_loop()` and `fll_program_signal_check_simple()`.

Remove all stale and no longer needed signal check defines.

data/build/stand_alone/configs/tacocat-config.h
sources/c/program/kevux/tools/tacocat/main/common/define.h
sources/c/program/kevux/tools/tacocat/main/process.c
sources/c/program/kevux/tools/tacocat/main/signal.c
sources/c/program/kevux/tools/tacocat/main/signal.h
sources/c/program/kevux/tools/tacocat/tacocat/main.c

index 8db32edede6d6f93570856fb7364f068595693fa..60817973dc12e0247aeaeac35a3f5c699e43e233 100644 (file)
 //#define _di_fll_program_print_version_
 //#define _di_fll_program_s_a_
 //#define _di_fll_program_s_e_
+//#define _di_fll_program_signal_check_loop_
+//#define _di_fll_program_signal_check_simple_
+//#define _di_fll_program_signal_d_
 //#define _di_fll_program_standard_set_down_
 //#define _di_fll_program_standard_set_up_
 //#define _di_fll_program_standard_signal_handle_
index 40a0939edfbfc42d3952769cb3cd3484c407617e..f65372bb9a632d650125e1614046ad2d36e036d7 100644 (file)
@@ -46,7 +46,6 @@ extern "C" {
  *   - read:      The size to read at a time when processing the packet.
  *
  * kt_tacocat_signal_*_d:
- *   - check:          When not using threads, this is how often to perform the check (lower numbers incur more kernel I/O).
  *   - check_failsafe: When using threads, how many consecutive failures to check signal before aborting (as a recursion failsafe).
  *
  * kt_tacocat_startup_*_d:
@@ -80,8 +79,7 @@ extern "C" {
   #define kt_tacocat_packet_prebuffer_d 0x200
   #define kt_tacocat_packet_read_d      0x8000
 
-  #define kt_tacocat_signal_check_d          0x4e20
-  #define kt_tacocat_signal_check_failsafe_d 0x4e20
+  #define kt_tacocat_signal_check_failsafe_d 20000
 
   #define kt_tacocat_startup_retry_delay_second_d      3
   #define kt_tacocat_startup_retry_delay_millisecond_d 0
@@ -312,6 +310,17 @@ extern "C" {
   #define kt_tacocat_socket_flag_resend_d 0x10
 #endif // _di_kt_tacocat_socket_flag_d_
 
+/**
+ * A macro wrapping the appropriate signal check function based on threaded/non-threaded support.
+ */
+#ifndef _di_kt_tacocat_signal_check_d_
+  #ifdef _di_thread_support_
+    #define macro_kt_tacocat_signal_check(program, state) fll_program_signal_check_loop(program, state)
+  #else
+    #define macro_kt_tacocat_signal_check(program, state) fll_program_signal_check_simple(program, state)
+  #endif // _di_thread_support_
+#endif // _di_kt_tacocat_signal_check_d_
+
 #ifdef __cplusplus
 } // extern "C"
 #endif
index fa15c2cac165c8a312d7b448f444ebb190fca8f6..2a6f1b4b376ecafd8294547f7356ac8f5e879093 100644 (file)
@@ -152,7 +152,7 @@ extern "C" {
 
     for (f_number_unsigned_t i = 0; i < main->setting.receive.used; ++i) {
 
-      if (kt_tacocat_signal_check(main)) return;
+      if (macro_kt_tacocat_signal_check(&main->program, &main->setting.state)) return;
       if (F_status_is_error(main->setting.receive.array[i].status)) continue;
 
       main->setting.receive.array[i].socket.id = -1;
@@ -279,7 +279,7 @@ extern "C" {
 
     for (f_number_unsigned_t i = 0; i < main->setting.send.used; ++i) {
 
-      if (kt_tacocat_signal_check(main)) return;
+      if (macro_kt_tacocat_signal_check(&main->program, &main->setting.state)) return;
       if (F_status_is_error(main->setting.send.array[i].status)) continue;
 
       main->setting.send.array[i].status = f_socket_create(&main->setting.send.array[i].socket);
@@ -413,7 +413,7 @@ extern "C" {
 
     for (f_number_unsigned_t i = 0; i < sets.used; ++i) {
 
-      if (kt_tacocat_signal_check(main)) return;
+      if (macro_kt_tacocat_signal_check(&main->program, &main->setting.state)) return;
 
       if (F_status_is_error(sets.array[i].status)) {
         *status = sets.array[i].status;
index 2c61dff46dc6e1964c76be826181b42ea01386d1..5cea582b483a25c432bc92317041277ead79179d 100644 (file)
@@ -4,41 +4,6 @@
 extern "C" {
 #endif
 
-#if !defined(_di_kt_tacocat_signal_check_) && defined(_di_thread_support_)
-  f_status_t kt_tacocat_signal_check(kt_tacocat_main_t * const main) {
-
-    if (!main) return F_false;
-    if (main->program.signal_received) return F_true;
-
-    if (!((++main->program.signal_check) % kt_tacocat_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_kt_tacocat_signal_check_) && defined(_di_thread_support_)
-
-#if !defined(_di_kt_tacocat_signal_check_) && !defined(_di_thread_support_)
-  f_status_t kt_tacocat_signal_check(kt_tacocat_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_kt_tacocat_signal_check_) && !defined(_di_thread_support_)
-
 #if !defined(_di_kt_tacocat_signal_handler_) && !defined(_di_thread_support_)
   void kt_tacocat_signal_handler(kt_tacocat_main_t * const main) {
 
index f901100aa654d8f0bf39c013f19cc4bd3b846b20..38eac067cc60535f6dc70b3a6f90440a8c4e0f7d 100644 (file)
@@ -13,40 +13,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 kt_tacocat_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.
- *
- *   Must not be NULL.
- *
- *   This does not alter main.setting.state.status.
- *
- * @return
- *   F_true on signal received.
- *   F_false otherwise.
- *
- * @see kt_tacocat_signal_handler()
- *
- * @see fll_program_standard_signal_received()
- */
-#ifndef _di_kt_tacocat_signal_check_
-  extern f_status_t kt_tacocat_signal_check(kt_tacocat_main_t * const main);
-#endif // _di_kt_tacocat_signal_check_
-
-/**
  * Signal handler for signals/interrupts.
  *
  * This blocks until an expected signal is recieved.
index 4f9ac28e7fda756a3aaa4797785f5cf84160b687..073bec8f6e72fc361da54e5d72e4c38910311117 100644 (file)
@@ -62,7 +62,7 @@ int main(const int argc, const f_string_t *argv, const f_string_t *envp) {
           kt_tacocat_setting_load(arguments, &data);
         }
 
-        if (!kt_tacocat_signal_check(&data)) {
+        if (!macro_kt_tacocat_signal_check(&data.program, &data.setting.state)) {
           kt_tacocat_main(&data);
         }
 
@@ -76,7 +76,11 @@ int main(const int argc, const f_string_t *argv, const f_string_t *envp) {
 
   fll_program_standard_set_down(&data.program);
 
-  return (F_status_is_error(data.setting.state.status) || data.setting.state.status == F_false) ? 1 : 0;
+  if (F_status_is_error(data.setting.state.status)) {
+    return F_status_set_fine(data.setting.state.status) == F_support_not ? 2 : 1;
+  }
+
+  return data.setting.state.status == F_false ? 1 : 0;
 }
 
 #ifdef __cplusplus