From e7a90cd79d826784ed5406e3bb8e7f7b3e101867 Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Wed, 8 Oct 2025 20:51:28 -0500 Subject: [PATCH] Feature: Add F_lock_critical, F_lock_read_write, F_lock_release, F_lock_signal, F_lock_time, and F_lock_wait. Add additional lock related codes to standardize more options for more fine tuned status control when dealing with locking. --- level_0/f_status/c/status.h | 12 ++++ level_0/f_status_string/c/status_string.c | 72 ++++++++++++++++++++++ level_0/f_status_string/c/status_string.h | 36 +++++++++++ .../tests/unit/c/test-status_string-to.c | 26 +++++++- level_1/fl_status_string/c/status_string.c | 72 ++++++++++++++++++++++ .../tests/unit/c/test-status_string-from.c | 26 +++++++- 6 files changed, 242 insertions(+), 2 deletions(-) diff --git a/level_0/f_status/c/status.h b/level_0/f_status/c/status.h index 89aba50..3dd4ec3 100644 --- a/level_0/f_status/c/status.h +++ b/level_0/f_status/c/status.h @@ -543,13 +543,25 @@ extern "C" { F_local, F_local_not, F_lock, + F_lock_critical, + F_lock_critical_not, F_lock_mutex, F_lock_mutex_not, F_lock_not, F_lock_read, F_lock_read_not, + F_lock_read_write, + F_lock_read_write_not, + F_lock_release, + F_lock_release_not, + F_lock_signal, + F_lock_signal_not, F_lock_spin, F_lock_spin_not, + F_lock_time, + F_lock_time_not, + F_lock_wait, + F_lock_wait_not, F_lock_write, F_lock_write_not, F_loop, diff --git a/level_0/f_status_string/c/status_string.c b/level_0/f_status_string/c/status_string.c index 26c22a4..3ca0705 100644 --- a/level_0/f_status_string/c/status_string.c +++ b/level_0/f_status_string/c/status_string.c @@ -412,13 +412,25 @@ extern "C" { const f_string_static_t f_status_local_s = macro_f_string_static_t_initialize_1(F_status_local_s, 0, F_status_local_s_length); const f_string_static_t f_status_local_not_s = macro_f_string_static_t_initialize_1(F_status_local_not_s, 0, F_status_local_not_s_length); const f_string_static_t f_status_lock_s = macro_f_string_static_t_initialize_1(F_status_lock_s, 0, F_status_lock_s_length); + const f_string_static_t f_status_lock_critical_s = macro_f_string_static_t_initialize_1(F_status_lock_critical_s, 0, F_status_lock_critical_s_length); + const f_string_static_t f_status_lock_critical_not_s = macro_f_string_static_t_initialize_1(F_status_lock_critical_not_s, 0, F_status_lock_critical_not_s_length); const f_string_static_t f_status_lock_mutex_s = macro_f_string_static_t_initialize_1(F_status_lock_mutex_s, 0, F_status_lock_mutex_s_length); const f_string_static_t f_status_lock_mutex_not_s = macro_f_string_static_t_initialize_1(F_status_lock_mutex_not_s, 0, F_status_lock_mutex_not_s_length); const f_string_static_t f_status_lock_not_s = macro_f_string_static_t_initialize_1(F_status_lock_not_s, 0, F_status_lock_not_s_length); const f_string_static_t f_status_lock_read_s = macro_f_string_static_t_initialize_1(F_status_lock_read_s, 0, F_status_lock_read_s_length); const f_string_static_t f_status_lock_read_not_s = macro_f_string_static_t_initialize_1(F_status_lock_read_not_s, 0, F_status_lock_read_not_s_length); + const f_string_static_t f_status_lock_read_write_s = macro_f_string_static_t_initialize_1(F_status_lock_read_write_s, 0, F_status_lock_read_write_s_length); + const f_string_static_t f_status_lock_read_write_not_s = macro_f_string_static_t_initialize_1(F_status_lock_read_write_not_s, 0, F_status_lock_read_write_not_s_length); + const f_string_static_t f_status_lock_release_s = macro_f_string_static_t_initialize_1(F_status_lock_release_s, 0, F_status_lock_release_s_length); + const f_string_static_t f_status_lock_release_not_s = macro_f_string_static_t_initialize_1(F_status_lock_release_not_s, 0, F_status_lock_release_not_s_length); + const f_string_static_t f_status_lock_signal_s = macro_f_string_static_t_initialize_1(F_status_lock_signal_s, 0, F_status_lock_signal_s_length); + const f_string_static_t f_status_lock_signal_not_s = macro_f_string_static_t_initialize_1(F_status_lock_signal_not_s, 0, F_status_lock_signal_not_s_length); const f_string_static_t f_status_lock_spin_s = macro_f_string_static_t_initialize_1(F_status_lock_spin_s, 0, F_status_lock_spin_s_length); const f_string_static_t f_status_lock_spin_not_s = macro_f_string_static_t_initialize_1(F_status_lock_spin_not_s, 0, F_status_lock_spin_not_s_length); + const f_string_static_t f_status_lock_time_s = macro_f_string_static_t_initialize_1(F_status_lock_time_s, 0, F_status_lock_time_s_length); + const f_string_static_t f_status_lock_time_not_s = macro_f_string_static_t_initialize_1(F_status_lock_time_not_s, 0, F_status_lock_time_not_s_length); + const f_string_static_t f_status_lock_wait_s = macro_f_string_static_t_initialize_1(F_status_lock_wait_s, 0, F_status_lock_wait_s_length); + const f_string_static_t f_status_lock_wait_not_s = macro_f_string_static_t_initialize_1(F_status_lock_wait_not_s, 0, F_status_lock_wait_not_s_length); const f_string_static_t f_status_lock_write_s = macro_f_string_static_t_initialize_1(F_status_lock_write_s, 0, F_status_lock_write_s_length); const f_string_static_t f_status_lock_write_not_s = macro_f_string_static_t_initialize_1(F_status_lock_write_not_s, 0, F_status_lock_write_not_s_length); const f_string_static_t f_status_loop_s = macro_f_string_static_t_initialize_1(F_status_loop_s, 0, F_status_loop_s_length); @@ -2739,6 +2751,16 @@ extern "C" { break; + case F_lock_critical: + *name = f_status_lock_critical_s; + + break; + + case F_lock_critical_not: + *name = f_status_lock_critical_not_s; + + break; + case F_lock_mutex: *name = f_status_lock_mutex_s; @@ -2764,6 +2786,36 @@ extern "C" { break; + case F_lock_read_write: + *name = f_status_lock_read_write_s; + + break; + + case F_lock_read_write_not: + *name = f_status_lock_read_write_not_s; + + break; + + case F_lock_release: + *name = f_status_lock_release_s; + + break; + + case F_lock_release_not: + *name = f_status_lock_release_not_s; + + break; + + case F_lock_signal: + *name = f_status_lock_signal_s; + + break; + + case F_lock_signal_not: + *name = f_status_lock_signal_not_s; + + break; + case F_lock_spin: *name = f_status_lock_spin_s; @@ -2774,6 +2826,26 @@ extern "C" { break; + case F_lock_time: + *name = f_status_lock_time_s; + + break; + + case F_lock_time_not: + *name = f_status_lock_time_not_s; + + break; + + case F_lock_wait: + *name = f_status_lock_wait_s; + + break; + + case F_lock_wait_not: + *name = f_status_lock_wait_not_s; + + break; + case F_lock_write: *name = f_status_lock_write_s; diff --git a/level_0/f_status_string/c/status_string.h b/level_0/f_status_string/c/status_string.h index b574629..8a5e0a7 100644 --- a/level_0/f_status_string/c/status_string.h +++ b/level_0/f_status_string/c/status_string.h @@ -571,13 +571,25 @@ extern "C" { #define F_status_local_s "F_local" #define F_status_local_not_s "F_local_not" #define F_status_lock_s "F_lock" + #define F_status_lock_critical_s "F_lock_critical" + #define F_status_lock_critical_not_s "F_lock_critical_not" #define F_status_lock_mutex_s "F_lock_mutex" #define F_status_lock_mutex_not_s "F_lock_mutex_not" #define F_status_lock_not_s "F_lock_not" #define F_status_lock_read_s "F_lock_read" #define F_status_lock_read_not_s "F_lock_read_not" + #define F_status_lock_read_write_s "F_lock_read_write" + #define F_status_lock_read_write_not_s "F_lock_read_write_not" + #define F_status_lock_release_s "F_lock_release" + #define F_status_lock_release_not_s "F_lock_release_not" + #define F_status_lock_signal_s "F_lock_signal" + #define F_status_lock_signal_not_s "F_lock_signal_not" #define F_status_lock_spin_s "F_lock_spin" #define F_status_lock_spin_not_s "F_lock_spin_not" + #define F_status_lock_time_s "F_lock_time" + #define F_status_lock_time_not_s "F_lock_time_not" + #define F_status_lock_wait_s "F_lock_wait" + #define F_status_lock_wait_not_s "F_lock_wait_not" #define F_status_lock_write_s "F_lock_write" #define F_status_lock_write_not_s "F_lock_write_not" #define F_status_loop_s "F_loop" @@ -1187,13 +1199,25 @@ extern "C" { #define F_status_local_s_length 7 #define F_status_local_not_s_length 11 #define F_status_lock_s_length 6 + #define F_status_lock_critical_s_length 15 + #define F_status_lock_critical_not_s_length 19 #define F_status_lock_mutex_s_length 12 #define F_status_lock_mutex_not_s_length 16 #define F_status_lock_not_s_length 10 #define F_status_lock_read_s_length 11 #define F_status_lock_read_not_s_length 15 + #define F_status_lock_read_write_s_length 17 + #define F_status_lock_read_write_not_s_length 21 + #define F_status_lock_release_s_length 14 + #define F_status_lock_release_not_s_length 18 + #define F_status_lock_signal_s_length 13 + #define F_status_lock_signal_not_s_length 17 #define F_status_lock_spin_s_length 11 #define F_status_lock_spin_not_s_length 15 + #define F_status_lock_time_s_length 11 + #define F_status_lock_time_not_s_length 15 + #define F_status_lock_wait_s_length 11 + #define F_status_lock_wait_not_s_length 15 #define F_status_lock_write_s_length 12 #define F_status_lock_write_not_s_length 16 #define F_status_loop_s_length 6 @@ -1805,13 +1829,25 @@ extern "C" { extern const f_string_static_t f_status_local_s; extern const f_string_static_t f_status_local_not_s; extern const f_string_static_t f_status_lock_s; + extern const f_string_static_t f_status_lock_critical_s; + extern const f_string_static_t f_status_lock_critical_not_s; extern const f_string_static_t f_status_lock_mutex_s; extern const f_string_static_t f_status_lock_mutex_not_s; extern const f_string_static_t f_status_lock_not_s; extern const f_string_static_t f_status_lock_read_s; extern const f_string_static_t f_status_lock_read_not_s; + extern const f_string_static_t f_status_lock_read_write_s; + extern const f_string_static_t f_status_lock_read_write_not_s; + extern const f_string_static_t f_status_lock_release_s; + extern const f_string_static_t f_status_lock_release_not_s; + extern const f_string_static_t f_status_lock_signal_s; + extern const f_string_static_t f_status_lock_signal_not_s; extern const f_string_static_t f_status_lock_spin_s; extern const f_string_static_t f_status_lock_spin_not_s; + extern const f_string_static_t f_status_lock_time_s; + extern const f_string_static_t f_status_lock_time_not_s; + extern const f_string_static_t f_status_lock_wait_s; + extern const f_string_static_t f_status_lock_wait_not_s; extern const f_string_static_t f_status_lock_write_s; extern const f_string_static_t f_status_lock_write_not_s; extern const f_string_static_t f_status_loop_s; diff --git a/level_0/f_status_string/tests/unit/c/test-status_string-to.c b/level_0/f_status_string/tests/unit/c/test-status_string-to.c index 767b40a..87687ba 100644 --- a/level_0/f_status_string/tests/unit/c/test-status_string-to.c +++ b/level_0/f_status_string/tests/unit/c/test-status_string-to.c @@ -437,13 +437,25 @@ void test__f_status_string_to__works(void **state) { F_local, F_local_not, F_lock, + F_lock_critical, + F_lock_critical_not, F_lock_mutex, F_lock_mutex_not, F_lock_not, F_lock_read, F_lock_read_not, + F_lock_read_write, + F_lock_read_write_not, + F_lock_release, + F_lock_release_not, + F_lock_signal, + F_lock_signal_not, F_lock_spin, F_lock_spin_not, + F_lock_time, + F_lock_time_not, + F_lock_wait, + F_lock_wait_not, F_lock_write, F_lock_write_not, F_loop, @@ -1122,13 +1134,25 @@ void test__f_status_string_to__works(void **state) { f_status_local_s, f_status_local_not_s, f_status_lock_s, + f_status_lock_critical_s, + f_status_lock_critical_not_s, f_status_lock_mutex_s, f_status_lock_mutex_not_s, f_status_lock_not_s, f_status_lock_read_s, f_status_lock_read_not_s, + f_status_lock_read_write_s, + f_status_lock_read_write_not_s, + f_status_lock_release_s, + f_status_lock_release_not_s, + f_status_lock_signal_s, + f_status_lock_signal_not_s, f_status_lock_spin_s, f_status_lock_spin_not_s, + f_status_lock_time_s, + f_status_lock_time_not_s, + f_status_lock_wait_s, + f_status_lock_wait_not_s, f_status_lock_write_s, f_status_lock_write_not_s, f_status_loop_s, @@ -1399,7 +1423,7 @@ void test__f_status_string_to__works(void **state) { f_status_status_code_last_s, }; - for (uint16_t i = 0; i < 678; ++i) { + for (uint16_t i = 0; i < 690; ++i) { f_string_static_t result = f_string_static_t_initialize; diff --git a/level_1/fl_status_string/c/status_string.c b/level_1/fl_status_string/c/status_string.c index 0671b55..809d347 100644 --- a/level_1/fl_status_string/c/status_string.c +++ b/level_1/fl_status_string/c/status_string.c @@ -2479,6 +2479,18 @@ extern "C" { return F_okay; } + if (f_compare_dynamic(name, f_status_lock_critical_s) == F_equal_to) { + *code = F_lock_critical; + + return F_okay; + } + + if (f_compare_dynamic(name, f_status_lock_critical_not_s) == F_equal_to) { + *code = F_lock_critical_not; + + return F_okay; + } + if (f_compare_dynamic(name, f_status_lock_mutex_s) == F_equal_to) { *code = F_lock_mutex; @@ -2509,6 +2521,42 @@ extern "C" { return F_okay; } + if (f_compare_dynamic(name, f_status_lock_read_write_s) == F_equal_to) { + *code = F_lock_read_write; + + return F_okay; + } + + if (f_compare_dynamic(name, f_status_lock_read_write_not_s) == F_equal_to) { + *code = F_lock_read_write_not; + + return F_okay; + } + + if (f_compare_dynamic(name, f_status_lock_release_s) == F_equal_to) { + *code = F_lock_release; + + return F_okay; + } + + if (f_compare_dynamic(name, f_status_lock_release_not_s) == F_equal_to) { + *code = F_lock_release_not; + + return F_okay; + } + + if (f_compare_dynamic(name, f_status_lock_signal_s) == F_equal_to) { + *code = F_lock_signal; + + return F_okay; + } + + if (f_compare_dynamic(name, f_status_lock_signal_not_s) == F_equal_to) { + *code = F_lock_signal_not; + + return F_okay; + } + if (f_compare_dynamic(name, f_status_lock_spin_s) == F_equal_to) { *code = F_lock_spin; @@ -2521,6 +2569,30 @@ extern "C" { return F_okay; } + if (f_compare_dynamic(name, f_status_lock_time_s) == F_equal_to) { + *code = F_lock_time; + + return F_okay; + } + + if (f_compare_dynamic(name, f_status_lock_time_not_s) == F_equal_to) { + *code = F_lock_time_not; + + return F_okay; + } + + if (f_compare_dynamic(name, f_status_lock_wait_s) == F_equal_to) { + *code = F_lock_wait; + + return F_okay; + } + + if (f_compare_dynamic(name, f_status_lock_wait_not_s) == F_equal_to) { + *code = F_lock_wait_not; + + return F_okay; + } + if (f_compare_dynamic(name, f_status_lock_write_s) == F_equal_to) { *code = F_lock_write; diff --git a/level_1/fl_status_string/tests/unit/c/test-status_string-from.c b/level_1/fl_status_string/tests/unit/c/test-status_string-from.c index db5db1c..531f074 100644 --- a/level_1/fl_status_string/tests/unit/c/test-status_string-from.c +++ b/level_1/fl_status_string/tests/unit/c/test-status_string-from.c @@ -453,13 +453,25 @@ void test__fl_status_string_from__works(void **state) { F_local, F_local_not, F_lock, + F_lock_critical, + F_lock_critical_not, F_lock_mutex, F_lock_mutex_not, F_lock_not, F_lock_read, F_lock_read_not, + F_lock_read_write, + F_lock_read_write_not, + F_lock_release, + F_lock_release_not, + F_lock_signal, + F_lock_signal_not, F_lock_spin, F_lock_spin_not, + F_lock_time, + F_lock_time_not, + F_lock_wait, + F_lock_wait_not, F_lock_write, F_lock_write_not, F_loop, @@ -1138,13 +1150,25 @@ void test__fl_status_string_from__works(void **state) { f_status_local_s, f_status_local_not_s, f_status_lock_s, + f_status_lock_critical_s, + f_status_lock_critical_not_s, f_status_lock_mutex_s, f_status_lock_mutex_not_s, f_status_lock_not_s, f_status_lock_read_s, f_status_lock_read_not_s, + f_status_lock_read_write_s, + f_status_lock_read_write_not_s, + f_status_lock_release_s, + f_status_lock_release_not_s, + f_status_lock_signal_s, + f_status_lock_signal_not_s, f_status_lock_spin_s, f_status_lock_spin_not_s, + f_status_lock_time_s, + f_status_lock_time_not_s, + f_status_lock_wait_s, + f_status_lock_wait_not_s, f_status_lock_write_s, f_status_lock_write_not_s, f_status_loop_s, @@ -1415,7 +1439,7 @@ void test__fl_status_string_from__works(void **state) { f_status_status_code_last_s, }; - for (uint16_t i = 0; i < 678; ++i) { + for (uint16_t i = 0; i < 690; ++i) { f_status_t result = F_okay; -- 1.8.3.1