From: Kevin Day Date: Thu, 30 Oct 2025 00:53:49 +0000 (-0500) Subject: Refactor: Make the controller instance options defines. X-Git-Tag: 0.7.3~22 X-Git-Url: https://www.git.kevux.org/?a=commitdiff_plain;h=2c623bffab4a72397f6fcb7013d300f745379931;p=controller Refactor: Make the controller instance options defines. These should not be enumerations. Refactor these into defines. --- diff --git a/data/build/settings b/data/build/settings index e6eb8d2..ca95ae0 100644 --- a/data/build/settings +++ b/data/build/settings @@ -74,7 +74,7 @@ build_sources_library thread.c thread/cleanup.c thread/control.c thread/enable.c build_sources_library validate.c build_sources_headers common.h controller.h common/define.h common/enumeration.h common/print.h common/string.h common/thread.h common/type.h -build_sources_headers common/define/control.h common/define/entry.h common/define/rule.h common/define/thread.h +build_sources_headers common/define/control.h common/define/entry.h common/define/instance.h common/define/rule.h common/define/thread.h build_sources_headers common/enumeration/control.h common/enumeration/entry.h common/enumeration/instance.h common/enumeration/process.h common/enumeration/rule.h common/enumeration/thread.h build_sources_headers common/string/general.h common/string/rule.h build_sources_headers common/type/cache.h common/type/control.h common/type/defs.h common/type/entry.h common/type/execute.h common/type/instance.h common/type/interrupt.h common/type/lock.h common/type/process.h common/type/rule.h common/type/thread.h diff --git a/sources/c/program/controller/main/common/define/instance.h b/sources/c/program/controller/main/common/define/instance.h new file mode 100644 index 0000000..03c4f33 --- /dev/null +++ b/sources/c/program/controller/main/common/define/instance.h @@ -0,0 +1,43 @@ +/** + * FLL - Level 3 + * + * Project: Controller + * API Version: 0.7 + * Licenses: lgpl-2.1-or-later + * + * Provides the common instance enumerations. + * + * This is auto-included and should not need to be explicitly included. + */ +#ifndef _controller_main_common_define_instance_h +#define _controller_main_common_define_instance_h + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Instance options. + * + * controller_instance_option_*_d: + * - asynchronous: The Instance runs asynchronously. + * - require: The Instance is required. + * - simulate: The Instance is being simulated. + * - validate: The Instance is being validated. + * - wait: The Instance is blocking (waiting) for all asynchronous Instances before it to complete before running. + * - simulate_validate: A helper flag representing simulate and validate flag bits being set. + */ +#ifndef _di_controller_instance_option_d_ + #define controller_instance_option_asynchronous_d 0x1 + #define controller_instance_option_require_d 0x2 + #define controller_instance_option_simulate_d 0x4 + #define controller_instance_option_validate_d 0x8 + #define controller_instance_option_wait_d 0x10 + #define controller_instance_option_simulate_validate_d 0xc +#endif // _di_controller_instance_option_d_ + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // _controller_main_common_define_instance_h diff --git a/sources/c/program/controller/main/common/enumeration/instance.h b/sources/c/program/controller/main/common/enumeration/instance.h index c08710a..c29d53f 100644 --- a/sources/c/program/controller/main/common/enumeration/instance.h +++ b/sources/c/program/controller/main/common/enumeration/instance.h @@ -17,30 +17,6 @@ extern "C" { #endif /** - * Instance options. - * - * @todo this should probably be defines rather than enums. - * - * controller_instance_option_*_e: - * - asynchronous: The Instance runs asynchronously. - * - require: The Instance is required. - * - simulate: The Instance is being simulated. - * - validate: The Instance is being validated. - * - wait: The Instance is blocking (waiting) for all asynchronous Instances before it to complete before running. - * - simulate_validate: A helper flag representing simulate and validate flag bits being set. - */ -#ifndef _di_controller_instance_option_e_ - enum { - controller_instance_option_asynchronous_e = 0x1, - controller_instance_option_require_e = 0x2, - controller_instance_option_simulate_e = 0x4, - controller_instance_option_validate_e = 0x8, - controller_instance_option_wait_e = 0x10, - controller_instance_option_simulate_validate_e = 0xc, - }; // enum -#endif // _di_controller_instance_option_e_ - -/** * Instance states. * * controller_instance_state_*_e: diff --git a/sources/c/program/controller/main/controller.h b/sources/c/program/controller/main/controller.h index 46aba6b..2743f67 100644 --- a/sources/c/program/controller/main/controller.h +++ b/sources/c/program/controller/main/controller.h @@ -80,6 +80,7 @@ #include #include #include +#include #include #include #include diff --git a/sources/c/program/controller/main/entry/process.c b/sources/c/program/controller/main/entry/process.c index e1b7fb1..05e67f1 100644 --- a/sources/c/program/controller/main/entry/process.c +++ b/sources/c/program/controller/main/entry/process.c @@ -322,27 +322,27 @@ extern "C" { options_instance = 0; if (main->setting.flag & controller_main_flag_simulate_d) { - options_instance |= controller_instance_option_simulate_e; + options_instance |= controller_instance_option_simulate_d; } if (entry_action->code & controller_entry_rule_code_require_d) { - options_instance |= controller_instance_option_require_e; + options_instance |= controller_instance_option_require_d; } if (entry_action->code & controller_entry_rule_code_wait_d) { - options_instance |= controller_instance_option_wait_e; + options_instance |= controller_instance_option_wait_d; } if (main->setting.flag & controller_main_flag_validate_d) { - options_instance |= controller_instance_option_validate_e; + options_instance |= controller_instance_option_validate_d; } if (entry_action->code & controller_entry_rule_code_asynchronous_d) { if (!(main->setting.flag & controller_main_flag_validate_d)) { - options_force |= controller_instance_option_asynchronous_e; + options_force |= controller_instance_option_asynchronous_d; } - options_instance |= controller_instance_option_asynchronous_e; + options_instance |= controller_instance_option_asynchronous_d; } status = controller_rule_instance_begin(main, cache, options_force, alias_rule, controller_entry_action_type_to_rule_action_type(entry_action->type), options_instance, is_entry ? controller_instance_type_entry_e : controller_instance_type_exit_e, stack); diff --git a/sources/c/program/controller/main/print/output/rule/validate.c b/sources/c/program/controller/main/print/output/rule/validate.c index 72bbd81..c004596 100644 --- a/sources/c/program/controller/main/print/output/rule/validate.c +++ b/sources/c/program/controller/main/print/output/rule/validate.c @@ -37,8 +37,8 @@ extern "C" { fl_print_format("%rRule '", print->to, f_string_eol_s); fl_print_format("%[%Q%]' has no '", print->to, print->set->title, rule->name, print->set->title); fl_print_format("%[%r%]' Action to execute and would '", print->to, print->set->title, controller_convert_rule_action_type_string(action), print->set->title); - fl_print_format("%[%r%]' because it is '", print->to, print->set->important, options & controller_instance_option_require_e ? controller_fail_s : controller_succeed_s, print->set->important); - fl_print_format("%[%r%]'.%r", print->to, print->set->important, options & controller_instance_option_require_e ? controller_required_s : controller_optional_s, print->set->important, f_string_eol_s); + fl_print_format("%[%r%]' because it is '", print->to, print->set->important, options & controller_instance_option_require_d ? controller_fail_s : controller_succeed_s, print->set->important); + fl_print_format("%[%r%]'.%r", print->to, print->set->important, options & controller_instance_option_require_d ? controller_required_s : controller_optional_s, print->set->important, f_string_eol_s); } else { fl_print_format("%rRule '", print->to, f_string_eol_s); @@ -48,8 +48,8 @@ extern "C" { fl_print_format("'%[%r%]', ", print->to, print->set->title, controller_service_s, print->set->title); fl_print_format("'%[%r%]', or ", print->to, print->set->title, controller_script_s, print->set->title); fl_print_format("'%[%r%]'", print->to, print->set->title, controller_utility_s, print->set->title); - fl_print_format(") and would '%[%r%]' because it is '", print->to, print->set->important, options & controller_instance_option_require_e ? controller_fail_s : controller_succeed_s, print->set->important); - fl_print_format("%[%r%]'.%r", print->to, print->set->important, options & controller_instance_option_require_e ? controller_required_s : controller_optional_s, print->set->important, f_string_eol_s); + fl_print_format(") and would '%[%r%]' because it is '", print->to, print->set->important, options & controller_instance_option_require_d ? controller_fail_s : controller_succeed_s, print->set->important); + fl_print_format("%[%r%]'.%r", print->to, print->set->important, options & controller_instance_option_require_d ? controller_required_s : controller_optional_s, print->set->important, f_string_eol_s); } controller_unlock_print_flush(print->to, &main->thread); @@ -98,7 +98,7 @@ extern "C" { f_print_dynamic_raw(f_string_eol_s, print->to); // How. - fl_print_format(" %[%r%] %r%r", print->to, print->set->important, controller_how_s, print->set->important, options & controller_instance_option_asynchronous_e ? controller_asynchronous_s : controller_synchronous_s, f_string_eol_s); + fl_print_format(" %[%r%] %r%r", print->to, print->set->important, controller_how_s, print->set->important, options & controller_instance_option_asynchronous_d ? controller_asynchronous_s : controller_synchronous_s, f_string_eol_s); // Nice. fl_print_format(" %[%r%]", print->to, print->set->important, controller_nice_s, print->set->important); @@ -166,7 +166,7 @@ extern "C" { f_print_dynamic_raw(f_string_eol_s, print->to); // Wait. - fl_print_format(" %[%r%] %r%r", print->to, print->set->important, controller_wait_s, print->set->important, options & controller_instance_option_wait_e ? controller_yes_s : controller_no_s, f_string_eol_s); + fl_print_format(" %[%r%] %r%r", print->to, print->set->important, controller_wait_s, print->set->important, options & controller_instance_option_wait_d ? controller_yes_s : controller_no_s, f_string_eol_s); // Affinity. fl_print_format(" %[%r%] {%r", print->to, print->set->important, controller_affinity_s, print->set->important, f_string_eol_s); diff --git a/sources/c/program/controller/main/print/output/rule/validate.h b/sources/c/program/controller/main/print/output/rule/validate.h index 601565c..b715122 100644 --- a/sources/c/program/controller/main/print/output/rule/validate.h +++ b/sources/c/program/controller/main/print/output/rule/validate.h @@ -44,8 +44,8 @@ extern "C" { * @param options * A number using bits to represent specific boolean options. * If no bits set, then operate normally in a synchronous manner. - * If bit controller_instance_option_simulate_e, then the Rule execution is in simulation mode (printing a message that the Rule would be executed but does not execute the rule). - * If bit controller_instance_option_asynchronous_e, then run asynchronously. + * If bit controller_instance_option_simulate_d, then the Rule execution is in simulation mode (printing a message that the Rule would be executed but does not execute the rule). + * If bit controller_instance_option_asynchronous_d, then run asynchronously. * * @return * F_okay on success. diff --git a/sources/c/program/controller/main/rule/execute.c b/sources/c/program/controller/main/rule/execute.c index d7da15f..1089d01 100644 --- a/sources/c/program/controller/main/rule/execute.c +++ b/sources/c/program/controller/main/rule/execute.c @@ -259,7 +259,7 @@ extern "C" { if (F_status_is_error(status)) { instance->rule.items.array[i].actions.array[j].status = F_status_set_error(F_failure); - if (!(options & controller_instance_option_simulate_e)) break; + if (!(options & controller_instance_option_simulate_d)) break; success = F_status_set_error(F_failure); } @@ -301,7 +301,7 @@ extern "C" { if (F_status_is_error(status)) { instance->rule.items.array[i].actions.array[j].status = F_status_set_error(F_failure); - if (!(options & controller_instance_option_simulate_e)) break; + if (!(options & controller_instance_option_simulate_d)) break; success = F_status_set_error(F_failure); } @@ -332,7 +332,7 @@ extern "C" { if (F_status_is_error(status)) { instance->rule.items.array[i].actions.array[j].status = F_status_set_error(F_failure); - if (!(options & controller_instance_option_simulate_e)) break; + if (!(options & controller_instance_option_simulate_d)) break; success = F_status_set_error(F_failure); } @@ -376,7 +376,7 @@ extern "C" { if (F_status_is_error(status)) { instance->rule.items.array[i].actions.array[j].status = F_status_set_error(F_failure); - if (!(options & controller_instance_option_simulate_e)) break; + if (!(options & controller_instance_option_simulate_d)) break; success = F_status_set_error(F_failure); } @@ -400,7 +400,7 @@ extern "C" { } } // for - if (status == F_child || F_status_set_fine(status) == F_interrupt || F_status_is_error(status) && !(options & controller_instance_option_simulate_e)) { + if (status == F_child || F_status_set_fine(status) == F_interrupt || F_status_is_error(status) && !(options & controller_instance_option_simulate_d)) { break; } } // for @@ -451,7 +451,7 @@ extern "C" { f_thread_unlock(&instance->use); - if (options & controller_instance_option_simulate_e) { + if (options & controller_instance_option_simulate_d) { controller_print_entry_output_execute_simulate(&main->program.output, instance, program, arguments); // Sleep for less than a second to better show simulation of synchronous vs asynchronous. @@ -632,7 +632,7 @@ extern "C" { return status; } - if (options & controller_instance_option_simulate_e) { + if (options & controller_instance_option_simulate_d) { controller_print_entry_output_execute_simulate(&main->program.output, instance, program, arguments); // Sleep for less than a second to better show simulation of synchronous vs asynchronous. diff --git a/sources/c/program/controller/main/rule/execute.h b/sources/c/program/controller/main/rule/execute.h index c1413df..2802d8e 100644 --- a/sources/c/program/controller/main/rule/execute.h +++ b/sources/c/program/controller/main/rule/execute.h @@ -44,7 +44,7 @@ extern "C" { * - controller_rule_action_type_stop_e * @param options * Process options to consider when executing. - * If bit controller_instance_option_simulate_e, then the Rule execution is in simulation mode (printing a message that the Rule would be executed but does not execute the rule). + * If bit controller_instance_option_simulate_d, then the Rule execution is in simulation mode (printing a message that the Rule would be executed but does not execute the rule). * * @return * F_okay on success. @@ -81,7 +81,7 @@ extern "C" { * The arguments to pass to the program. * @param options * Process options to consider when executing. - * If bit controller_instance_option_simulate_e, then the Rule execution is in simulation mode (printing a message that the Rule would be executed but does not execute the rule). + * If bit controller_instance_option_simulate_d, then the Rule execution is in simulation mode (printing a message that the Rule would be executed but does not execute the rule). * @param execute_set * The execute parameter and as settings. * @@ -166,7 +166,7 @@ extern "C" { * The arguments to pass to the program. * @param options * Process options to consider when executing. - * If bit controller_instance_option_simulate_e, then the Rule execution is in simulation mode (printing a message that the Rule would be executed but does not execute the rule). + * If bit controller_instance_option_simulate_d, then the Rule execution is in simulation mode (printing a message that the Rule would be executed but does not execute the rule). * @param with * The "with" option flags. * @param execute_set diff --git a/sources/c/program/controller/main/rule/instance.c b/sources/c/program/controller/main/rule/instance.c index 452e0f6..2358a70 100644 --- a/sources/c/program/controller/main/rule/instance.c +++ b/sources/c/program/controller/main/rule/instance.c @@ -67,7 +67,7 @@ extern "C" { return status; } - if ((instance->options & controller_instance_option_simulate_validate_e) == controller_instance_option_simulate_validate_e) { + if ((instance->options & controller_instance_option_simulate_validate_d) == controller_instance_option_simulate_validate_d) { switch (instance->action) { case controller_rule_action_type_freeze_e: case controller_rule_action_type_kill_e: @@ -180,7 +180,7 @@ extern "C" { controller_print_error_rule_instance_need_want_wish(&main->program.error, instance, strings[i], dynamics[i]->array[j], "is not found"); - if (!(instance->options & controller_instance_option_simulate_e)) { + if (!(instance->options & controller_instance_option_simulate_d)) { if (dependency) { f_thread_unlock(&dependency->active); } @@ -226,7 +226,7 @@ extern "C" { status = controller_instance_wait(dependency); - if (F_status_is_error(status) && !(instance->options & controller_instance_option_simulate_e)) break; + if (F_status_is_error(status) && !(instance->options & controller_instance_option_simulate_d)) break; status_lock = controller_lock_read_instance(instance, &dependency->use); @@ -257,11 +257,11 @@ extern "C" { options_instance = 0; if (main->setting.flag & controller_main_flag_simulate_d) { - options_instance |= controller_instance_option_simulate_e; + options_instance |= controller_instance_option_simulate_d; } - if (instance->options & controller_instance_option_validate_e) { - options_instance |= controller_instance_option_validate_e; + if (instance->options & controller_instance_option_validate_d) { + options_instance |= controller_instance_option_validate_d; } // Synchronously execute dependency. @@ -277,7 +277,7 @@ extern "C" { if (i == 0 || i == 1 || F_status_set_fine(status) == F_memory_not) { controller_print_error_rule_instance_need_want_wish(&main->program.error, instance, strings[i], alias_other_buffer, "failed during execution"); - if (!(dependency->options & controller_instance_option_simulate_e) || F_status_set_fine(status) == F_memory_not) { + if (!(dependency->options & controller_instance_option_simulate_d) || F_status_set_fine(status) == F_memory_not) { f_thread_unlock(&dependency->active); break; @@ -324,7 +324,7 @@ extern "C" { controller_print_error_rule_instance_need_want_wish(&main->program.error, instance, strings[i], alias_other_buffer, "is in a failed state"); - if (!(dependency->options & controller_instance_option_simulate_e)) { + if (!(dependency->options & controller_instance_option_simulate_d)) { f_thread_unlock(&dependency->active); break; @@ -345,22 +345,22 @@ extern "C" { } // for if (status == F_child || F_status_set_fine(status) == F_interrupt) break; - if (F_status_is_error(status) && !(instance->options & controller_instance_option_simulate_e)) break; + if (F_status_is_error(status) && !(instance->options & controller_instance_option_simulate_d)) break; } // for } if (status == F_child || F_status_set_fine(status) == F_interrupt) return status; if (!controller_thread_is_enabled_instance(instance)) return F_status_set_error(F_interrupt); - if ((instance->options & controller_instance_option_wait_e) && F_status_is_error_not(status) && (instance->options & controller_instance_option_validate_e)) { + if ((instance->options & controller_instance_option_wait_d) && F_status_is_error_not(status) && (instance->options & controller_instance_option_validate_d)) { status_lock = controller_rule_wait_all_instance_type(main, instance->type, F_false); if (F_status_set_fine(status_lock) == F_interrupt) return status_lock; } - if (!(instance->options & controller_instance_option_validate_e) && F_status_is_error_not(status)) { + if (!(instance->options & controller_instance_option_validate_d) && F_status_is_error_not(status)) { // Find at least one of the requested Action when the Rule is required. - if (instance->options & controller_instance_option_require_e) { + if (instance->options & controller_instance_option_require_d) { uint8_t missing = F_true; f_number_unsigned_t j = 0; @@ -573,7 +573,7 @@ extern "C" { f_thread_unlock(&instance->use); if (F_status_is_error_not(status)) { - if (instance_action && (options_force & controller_instance_option_asynchronous_e)) { + if (instance_action && (options_force & controller_instance_option_asynchronous_d)) { if (instance->type == controller_instance_type_exit_e) { status = f_thread_create(0, &instance->thread, controller_thread_instance_other, (void *) instance); } @@ -623,7 +623,7 @@ extern "C" { return status; } - if (!action || (options_force & controller_instance_option_asynchronous_e)) { + if (!action || (options_force & controller_instance_option_asynchronous_d)) { instance->state = controller_instance_state_done_e; } else { @@ -650,7 +650,7 @@ extern "C" { { f_status_t status_lock = F_okay; - if (options_force & controller_instance_option_asynchronous_e) { + if (options_force & controller_instance_option_asynchronous_d) { status_lock = controller_lock_read_instance(instance, &instance->active); if (F_status_is_error(status_lock)) { @@ -669,7 +669,7 @@ extern "C" { f_thread_unlock(&instance->main->thread.lock.rule); } - if (options_force & controller_instance_option_asynchronous_e) { + if (options_force & controller_instance_option_asynchronous_d) { f_thread_unlock(&instance->active); } @@ -828,7 +828,7 @@ extern "C" { return status_lock; } - instance->state = (options_force & controller_instance_option_asynchronous_e) ? controller_instance_state_done_e : controller_instance_state_idle_e; + instance->state = (options_force & controller_instance_option_asynchronous_d) ? controller_instance_state_done_e : controller_instance_state_idle_e; instance->stack.used = used_original_stack; f_thread_unlock(&instance->use); diff --git a/sources/c/program/controller/main/rule/instance.h b/sources/c/program/controller/main/rule/instance.h index 077b58d..f78ab83 100644 --- a/sources/c/program/controller/main/rule/instance.h +++ b/sources/c/program/controller/main/rule/instance.h @@ -68,8 +68,8 @@ extern "C" { * @param options_force * Force the given instance options, only supporting a subset of instance options. * - * If controller_instance_option_asynchronous_e, then asynchronously execute. - * If not controller_instance_option_asynchronous_e, then synchronously execute. + * If controller_instance_option_asynchronous_d, then asynchronously execute. + * If not controller_instance_option_asynchronous_d, then synchronously execute. * @param alias_rule * The alias of the rule, such as "boot/init". * @param action @@ -119,8 +119,8 @@ extern "C" { * @param options_force * Force the given instance options, only supporting a subset of instance options. * - * If controller_instance_option_asynchronous_e, then asynchronously execute. - * If not controller_instance_option_asynchronous_e, then synchronously execute. + * If controller_instance_option_asynchronous_d, then asynchronously execute. + * If not controller_instance_option_asynchronous_d, then synchronously execute. * * @return * Status from: controller_rule_instance_perform_details(). @@ -149,8 +149,8 @@ extern "C" { * @param options_force * Force the given instance options, only supporting a subset of instance options. * - * If controller_instance_option_asynchronous_e, then asynchronously execute. - * If not controller_instance_option_asynchronous_e, then synchronously execute. + * If controller_instance_option_asynchronous_d, then asynchronously execute. + * If not controller_instance_option_asynchronous_d, then synchronously execute. * @param flag * Designate lock states: * - 0x1: Locking error. diff --git a/sources/c/program/controller/main/rule/wait.c b/sources/c/program/controller/main/rule/wait.c index 4969a6b..f025f20 100644 --- a/sources/c/program/controller/main/rule/wait.c +++ b/sources/c/program/controller/main/rule/wait.c @@ -59,7 +59,7 @@ extern "C" { locked |= 0x2; // If the instance thread has been cleaned up and joined or if instance is not required when only processing "required", then skip. - if (!instance_list[i]->thread || required && !(instance_list[i]->options & controller_instance_option_require_e)) { + if (!instance_list[i]->thread || required && !(instance_list[i]->options & controller_instance_option_require_d)) { locked |= 0x8; } @@ -97,7 +97,7 @@ extern "C" { locked |= 0x2; } - if (instance_list[i]->options & controller_instance_option_require_e) { + if (instance_list[i]->options & controller_instance_option_require_d) { if (controller_rule_status_is_error(instance_list[i]->action, instance_list[i]->rule)) { status = F_status_set_error(F_require); @@ -129,7 +129,7 @@ extern "C" { locked |= 0x2; - if (instance_list[i]->options & controller_instance_option_require_e) { + if (instance_list[i]->options & controller_instance_option_require_d) { if (controller_rule_status_is_error(instance_list[i]->action, instance_list[i]->rule)) { status = F_status_set_error(F_require); diff --git a/sources/c/program/controller/main/thread/instance.c b/sources/c/program/controller/main/thread/instance.c index 0bf97ab..b46f07e 100644 --- a/sources/c/program/controller/main/thread/instance.c +++ b/sources/c/program/controller/main/thread/instance.c @@ -10,7 +10,7 @@ extern "C" { if (!instance || !instance->main) return; if (!controller_thread_enable_is_normal(&instance->main->thread, is_normal)) return; - const f_status_t status = controller_rule_instance_perform(instance, controller_instance_option_asynchronous_e); + const f_status_t status = controller_rule_instance_perform(instance, controller_instance_option_asynchronous_d); // A forked child Instance should de-allocate memory on exit. // It seems that this function doesn't return to the calling thread for a forked child Instance, even with the "return 0;" below.