From b60f4751f060ff19ed0884a37dcef2f48a0df65b Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Wed, 27 Aug 2025 21:59:40 -0500 Subject: [PATCH] Update: Add defines for f_thread and update appropriate build data. Add `f_thread` `common.h` and `common.c` with the defines relating to threads. Move the `f_thread_mutex_attribute_*_d` into these files and remove the `_attribute` from their names. Update the build disable headers. --- build/disable/level_0/f_thread.h | 61 ++++++++++++++- build/disable/level_0/f_type_array.h | 3 + build/disable/level_0/f_utf.h | 1 - build/level_0/settings | 2 + build/monolithic/settings | 2 + build/stand_alone/byte_dump.config.h | 8 +- build/stand_alone/byte_dump.settings | 1 + build/stand_alone/example.config.h | 8 +- build/stand_alone/example.settings | 1 + build/stand_alone/fake.config.h | 10 ++- build/stand_alone/fake.settings | 1 + build/stand_alone/firewall.config.h | 8 +- build/stand_alone/firewall.settings | 1 + build/stand_alone/utf8.config.h | 8 +- build/stand_alone/utf8.settings | 1 + level_0/f_thread/c/thread.h | 1 + level_0/f_thread/c/thread/common.c | 9 +++ level_0/f_thread/c/thread/common.h | 115 ++++++++++++++++++++++++++++ level_0/f_thread/c/thread/mutex_attribute.h | 14 ---- level_0/f_thread/data/build/settings | 2 + level_0/f_thread/data/build/settings-mocks | 2 + 21 files changed, 237 insertions(+), 22 deletions(-) create mode 100644 level_0/f_thread/c/thread/common.c create mode 100644 level_0/f_thread/c/thread/common.h diff --git a/build/disable/level_0/f_thread.h b/build/disable/level_0/f_thread.h index 176182e..b3125f5 100644 --- a/build/disable/level_0/f_thread.h +++ b/build/disable/level_0/f_thread.h @@ -29,6 +29,7 @@ #define _di_f_thread_attributes_t_ #define _di_f_thread_attributess_delete_callback_ #define _di_f_thread_attributess_destroy_callback_ +#define _di_f_thread_attributess_t_ #define _di_f_thread_barrier_attribute_create_ #define _di_f_thread_barrier_attribute_delete_ #define _di_f_thread_barrier_attribute_shared_get_ @@ -39,8 +40,17 @@ #define _di_f_thread_barrier_attributes_t_ #define _di_f_thread_barrier_attributess_delete_callback_ #define _di_f_thread_barrier_attributess_destroy_callback_ +#define _di_f_thread_barrier_attributess_t_ #define _di_f_thread_barrier_create_ #define _di_f_thread_barrier_delete_ +#define _di_f_thread_barrier_full_delete_ +#define _di_f_thread_barrier_full_t_ +#define _di_f_thread_barrier_fulls_delete_callback_ +#define _di_f_thread_barrier_fulls_destroy_callback_ +#define _di_f_thread_barrier_fulls_t_ +#define _di_f_thread_barrier_fullss_delete_callback_ +#define _di_f_thread_barrier_fullss_destroy_callback_ +#define _di_f_thread_barrier_fullss_t_ #define _di_f_thread_barrier_t_ #define _di_f_thread_barrier_wait_ #define _di_f_thread_barriers_delete_callback_ @@ -48,8 +58,10 @@ #define _di_f_thread_barriers_t_ #define _di_f_thread_barrierss_delete_callback_ #define _di_f_thread_barrierss_destroy_callback_ +#define _di_f_thread_barrierss_t_ #define _di_f_thread_caller_ #define _di_f_thread_cancel_ +#define _di_f_thread_cancel_d_ #define _di_f_thread_cancel_state_set_ #define _di_f_thread_cancel_test_ #define _di_f_thread_cancel_type_set_ @@ -67,8 +79,17 @@ #define _di_f_thread_condition_attributes_t_ #define _di_f_thread_condition_attributess_delete_callback_ #define _di_f_thread_condition_attributess_destroy_callback_ +#define _di_f_thread_condition_attributess_t_ #define _di_f_thread_condition_create_ #define _di_f_thread_condition_delete_ +#define _di_f_thread_condition_full_delete_ +#define _di_f_thread_condition_full_t_ +#define _di_f_thread_condition_fulls_delete_callback_ +#define _di_f_thread_condition_fulls_destroy_callback_ +#define _di_f_thread_condition_fulls_t_ +#define _di_f_thread_condition_fullss_delete_callback_ +#define _di_f_thread_condition_fullss_destroy_callback_ +#define _di_f_thread_condition_fullss_t_ #define _di_f_thread_condition_signal_ #define _di_f_thread_condition_signal_all_ #define _di_f_thread_condition_t_ @@ -79,11 +100,17 @@ #define _di_f_thread_conditions_t_ #define _di_f_thread_conditionss_delete_callback_ #define _di_f_thread_conditionss_destroy_callback_ +#define _di_f_thread_conditionss_t_ #define _di_f_thread_create_ #define _di_f_thread_detach_ #define _di_f_thread_exit_ #define _di_f_thread_id_t_ +#define _di_f_thread_ids_delete_callback_ +#define _di_f_thread_ids_destroy_callback_ #define _di_f_thread_ids_t_ +#define _di_f_thread_idss_delete_callback_ +#define _di_f_thread_idss_destroy_callback_ +#define _di_f_thread_idss_t_ #define _di_f_thread_join_ #define _di_f_thread_join_timed_ #define _di_f_thread_join_try_ @@ -97,6 +124,7 @@ #define _di_f_thread_keys_t_ #define _di_f_thread_keyss_delete_callback_ #define _di_f_thread_keyss_destroy_callback_ +#define _di_f_thread_keyss_t_ #define _di_f_thread_lock_attribute_create_ #define _di_f_thread_lock_attribute_delete_ #define _di_f_thread_lock_attribute_shared_get_ @@ -107,8 +135,17 @@ #define _di_f_thread_lock_attributes_t_ #define _di_f_thread_lock_attributess_delete_callback_ #define _di_f_thread_lock_attributess_destroy_callback_ +#define _di_f_thread_lock_attributess_t_ #define _di_f_thread_lock_create_ #define _di_f_thread_lock_delete_ +#define _di_f_thread_lock_full_delete_ +#define _di_f_thread_lock_full_t_ +#define _di_f_thread_lock_fulls_delete_callback_ +#define _di_f_thread_lock_fulls_destroy_callback_ +#define _di_f_thread_lock_fulls_t_ +#define _di_f_thread_lock_fullss_delete_callback_ +#define _di_f_thread_lock_fullss_destroy_callback_ +#define _di_f_thread_lock_fullss_t_ #define _di_f_thread_lock_read_ #define _di_f_thread_lock_read_timed_ #define _di_f_thread_lock_read_try_ @@ -121,6 +158,7 @@ #define _di_f_thread_locks_t_ #define _di_f_thread_lockss_delete_callback_ #define _di_f_thread_lockss_destroy_callback_ +#define _di_f_thread_lockss_t_ #define _di_f_thread_mutex_attribute_create_ #define _di_f_thread_mutex_attribute_delete_ #define _di_f_thread_mutex_attribute_priority_ceiling_get_ @@ -131,7 +169,6 @@ #define _di_f_thread_mutex_attribute_robust_set_ #define _di_f_thread_mutex_attribute_shared_get_ #define _di_f_thread_mutex_attribute_shared_set_ -#define _di_f_thread_mutex_attribute_d_ #define _di_f_thread_mutex_attribute_t_ #define _di_f_thread_mutex_attribute_type_get_ #define _di_f_thread_mutex_attribute_type_set_ @@ -140,28 +177,47 @@ #define _di_f_thread_mutex_attributes_t_ #define _di_f_thread_mutex_attributess_delete_callback_ #define _di_f_thread_mutex_attributess_destroy_callback_ +#define _di_f_thread_mutex_attributess_t_ #define _di_f_thread_mutex_consistent_ #define _di_f_thread_mutex_create_ #define _di_f_thread_mutex_d_ #define _di_f_thread_mutex_delete_ +#define _di_f_thread_mutex_full_delete_ +#define _di_f_thread_mutex_full_t_ +#define _di_f_thread_mutex_fulls_delete_callback_ +#define _di_f_thread_mutex_fulls_destroy_callback_ +#define _di_f_thread_mutex_fulls_t_ +#define _di_f_thread_mutex_fullss_delete_callback_ +#define _di_f_thread_mutex_fullss_destroy_callback_ +#define _di_f_thread_mutex_fullss_t_ #define _di_f_thread_mutex_lock_ #define _di_f_thread_mutex_lock_timed_ #define _di_f_thread_mutex_lock_try_ #define _di_f_thread_mutex_priority_ceiling_get_ #define _di_f_thread_mutex_priority_ceiling_set_ +#define _di_f_thread_mutex_protocol_d_ +#define _di_f_thread_mutex_robust_d_ #define _di_f_thread_mutex_t_ +#define _di_f_thread_mutex_type_d_ #define _di_f_thread_mutex_unlock_ #define _di_f_thread_mutexs_delete_callback_ #define _di_f_thread_mutexs_destroy_callback_ #define _di_f_thread_mutexs_t_ #define _di_f_thread_mutexss_delete_callback_ #define _di_f_thread_mutexss_destroy_callback_ +#define _di_f_thread_mutexss_t_ +#define _di_f_thread_name_get_ +#define _di_f_thread_name_set_ #define _di_f_thread_once_ #define _di_f_thread_once_t_ #define _di_f_thread_onces_t_ +#define _di_f_thread_oncess_t_ +#define _di_f_thread_process_d_ +#define _di_f_thread_schedule_d_ #define _di_f_thread_scheduler_parameter_get_ #define _di_f_thread_scheduler_parameter_set_ #define _di_f_thread_scheduler_priority_set_ +#define _di_f_thread_scope_d_ #define _di_f_thread_semaphore_create_ #define _di_f_thread_semaphore_delete_ #define _di_f_thread_semaphore_file_close_ @@ -178,12 +234,14 @@ #define _di_f_thread_semaphores_t_ #define _di_f_thread_semaphoress_delete_callback_ #define _di_f_thread_semaphoress_destroy_callback_ +#define _di_f_thread_semaphoress_t_ #define _di_f_thread_set_t_ #define _di_f_thread_sets_delete_callback_ #define _di_f_thread_sets_destroy_callback_ #define _di_f_thread_sets_t_ #define _di_f_thread_setss_delete_callback_ #define _di_f_thread_setss_destroy_callback_ +#define _di_f_thread_setss_t_ #define _di_f_thread_signal_mask_ #define _di_f_thread_signal_queue_ #define _di_f_thread_signal_write_ @@ -198,4 +256,5 @@ #define _di_f_thread_spins_t_ #define _di_f_thread_spinss_delete_callback_ #define _di_f_thread_spinss_destroy_callback_ +#define _di_f_thread_spinss_t_ #define _di_f_thread_unlock_ diff --git a/build/disable/level_0/f_type_array.h b/build/disable/level_0/f_type_array.h index a9606d7..0906e75 100644 --- a/build/disable/level_0/f_type_array.h +++ b/build/disable/level_0/f_type_array.h @@ -7,7 +7,9 @@ #define _di_f_fll_idss_delete_callback_ #define _di_f_fll_idss_destroy_callback_ #define _di_f_gidss_delete_callback_ +#define _di_f_gidss_destroy_callback_ #define _di_f_idss_delete_callback_ +#define _di_f_idss_destroy_callback_ #define _di_f_int128ss_delete_callback_ #define _di_f_int128ss_destroy_callback_ #define _di_f_int16ss_delete_callback_ @@ -51,6 +53,7 @@ #define _di_f_statess_destroy_callback_ #define _di_f_statusss_delete_callback_ #define _di_f_statusss_destroy_callback_ +#define _di_f_uidss_delete_callback_ #define _di_f_uidss_destroy_callback_ #define _di_f_uint128ss_delete_callback_ #define _di_f_uint128ss_destroy_callback_ diff --git a/build/disable/level_0/f_utf.h b/build/disable/level_0/f_utf.h index 0dfad5c..56677ab 100644 --- a/build/disable/level_0/f_utf.h +++ b/build/disable/level_0/f_utf.h @@ -175,7 +175,6 @@ #define _di_f_utf_string_prepend_assure_nulless_ #define _di_f_utf_string_prepend_nulless_ #define _di_f_utf_string_seek_line_ -#define _di_f_utf_string_seek_line_back #define _di_f_utf_string_seek_line_back_ #define _di_f_utf_string_seek_line_to_ #define _di_f_utf_string_seek_line_to_back_ diff --git a/build/level_0/settings b/build/level_0/settings index 5f7cbc7..5fb64c8 100644 --- a/build/level_0/settings +++ b/build/level_0/settings @@ -90,6 +90,7 @@ build_sources_library utf/private-dynamics.c utf/private-maps.c utf/private-map_ build_sources_library-thread thread.c build_sources_library-thread thread/attribute.c thread/attributes.c thread/attributess.c build_sources_library-thread thread/barrier.c thread/barriers.c thread/barrierss.c thread/barrier_attribute.c thread/barrier_attributes.c thread/barrier_attributess.c thread/barrier_full.c thread/barrier_fulls.c thread/barrier_fullss.c +build_sources_library-thread thread/common.c build_sources_library-thread thread/condition.c thread/conditions.c thread/conditionss.c thread/condition_attribute.c thread/condition_attributes.c thread/condition_attributess.c thread/condition_full.c thread/condition_fulls.c thread/condition_fullss.c build_sources_library-thread thread/id.c thread/ids.c thread/idss.c build_sources_library-thread thread/key.c thread/keys.c thread/keyss.c @@ -142,6 +143,7 @@ build_sources_headers utf.h utf/common.h utf/convert.h utf/dynamic.h utf/dynamic build_sources_headers-thread thread.h build_sources_headers-thread thread/attribute.h thread/attributes.h thread/attributess.h build_sources_headers-thread thread/barrier.h thread/barriers.h thread/barrierss.h thread/barrier_attribute.h thread/barrier_attributes.h thread/barrier_attributess.h thread/barrier_full.h thread/barrier_fulls.h thread/barrier_fullss.h +build_sources_headers-thread thread/common.h build_sources_headers-thread thread/condition.h thread/conditions.h thread/conditionss.h thread/condition_attribute.h thread/condition_attributes.h thread/condition_attributess.h thread/condition_full.h thread/condition_fulls.h thread/condition_fullss.h build_sources_headers-thread thread/id.h thread/ids.h thread/idss.h build_sources_headers-thread thread/key.h thread/keys.h thread/keyss.h diff --git a/build/monolithic/settings b/build/monolithic/settings index 00a9247..cd90fc0 100644 --- a/build/monolithic/settings +++ b/build/monolithic/settings @@ -111,6 +111,7 @@ build_sources_library level_2/program.c level_2/program/common.c level_2/program build_sources_library-thread level_0/thread.c build_sources_library-thread level_0/thread/attribute.c level_0/thread/attributes.c level_0/thread/attributess.c build_sources_library-thread level_0/thread/barrier.c level_0/thread/barriers.c level_0/thread/barrierss.c level_0/thread/barrier_attribute.c level_0/thread/barrier_attributes.c level_0/thread/barrier_attributess.c level_0/thread/barrier_full.c level_0/thread/barrier_fulls.c level_0/thread/barrier_fullss.c +build_sources_library-thread level_0/thread/common.c build_sources_library-thread level_0/thread/condition.c level_0/thread/conditions.c level_0/thread/conditionss.c level_0/thread/condition_attribute.c level_0/thread/condition_attributes.c level_0/thread/condition_attributess.c level_0/thread/condition_full.c level_0/thread/condition_fulls.c level_0/thread/condition_fullss.c build_sources_library-thread level_0/thread/id.c level_0/thread/ids.c level_0/thread/idss.c build_sources_library-thread level_0/thread/key.c level_0/thread/keys.c level_0/thread/keyss.c @@ -185,6 +186,7 @@ build_sources_headers level_2/program.h level_2/program/common.h level_2/program build_sources_headers-thread level_0/thread.h build_sources_headers-thread level_0/thread/attribute.h level_0/thread/attributes.h level_0/thread/attributess.h build_sources_headers-thread level_0/thread/barrier.h level_0/thread/barriers.h level_0/thread/barrierss.h level_0/thread/barrier_attribute.h level_0/thread/barrier_attributes.h level_0/thread/barrier_attributess.h level_0/thread/barrier_full.h level_0/thread/barrier_fulls.h level_0/thread/barrier_fullss.h +build_sources_headers-thread level_0/thread/common.h build_sources_headers-thread level_0/thread/condition.h level_0/thread/conditions.h level_0/thread/conditionss.h level_0/thread/condition_attribute.h level_0/thread/condition_attributes.h level_0/thread/condition_attributess.h level_0/thread/condition_full.h level_0/thread/condition_fulls.h level_0/thread/condition_fullss.h build_sources_headers-thread level_0/thread/id.h level_0/thread/ids.h level_0/thread/idss.h build_sources_headers-thread level_0/thread/key.h level_0/thread/keys.h level_0/thread/keyss.h diff --git a/build/stand_alone/byte_dump.config.h b/build/stand_alone/byte_dump.config.h index d5d1426..e0020ad 100644 --- a/build/stand_alone/byte_dump.config.h +++ b/build/stand_alone/byte_dump.config.h @@ -1072,6 +1072,7 @@ #define _di_f_thread_barrierss_t_ #define _di_f_thread_caller_ //#define _di_f_thread_cancel_ +#define _di_f_thread_cancel_d_ //#define _di_f_thread_cancel_state_set_ #define _di_f_thread_cancel_test_ #define _di_f_thread_cancel_type_set_ @@ -1170,7 +1171,6 @@ #define _di_f_thread_lockss_destroy_callback_ #define _di_f_thread_lockss_t_ #define _di_f_thread_mutex_attribute_create_ -#define _di_f_thread_mutex_attribute_d_ #define _di_f_thread_mutex_attribute_delete_ #define _di_f_thread_mutex_attribute_priority_ceiling_get_ #define _di_f_thread_mutex_attribute_priority_ceiling_set_ @@ -1206,7 +1206,10 @@ #define _di_f_thread_mutex_lock_try_ #define _di_f_thread_mutex_priority_ceiling_get_ #define _di_f_thread_mutex_priority_ceiling_set_ +#define _di_f_thread_mutex_protocol_d_ +#define _di_f_thread_mutex_robust_d_ #define _di_f_thread_mutex_t_ +#define _di_f_thread_mutex_type_d_ #define _di_f_thread_mutex_unlock_ #define _di_f_thread_mutexs_delete_callback_ #define _di_f_thread_mutexs_destroy_callback_ @@ -1220,9 +1223,12 @@ #define _di_f_thread_once_t_ #define _di_f_thread_onces_t_ #define _di_f_thread_oncess_t_ +#define _di_f_thread_process_d_ +#define _di_f_thread_schedule_d_ #define _di_f_thread_scheduler_parameter_get_ #define _di_f_thread_scheduler_parameter_set_ #define _di_f_thread_scheduler_priority_set_ +#define _di_f_thread_scope_d_ #define _di_f_thread_semaphore_create_ #define _di_f_thread_semaphore_delete_ #define _di_f_thread_semaphore_file_close_ diff --git a/build/stand_alone/byte_dump.settings b/build/stand_alone/byte_dump.settings index d4671e5..75304c2 100644 --- a/build/stand_alone/byte_dump.settings +++ b/build/stand_alone/byte_dump.settings @@ -57,6 +57,7 @@ build_sources_program fll/level_0/utf/private-dynamics.c fll/level_0/utf/private build_sources_program-thread fll/level_0/thread.c build_sources_program-thread fll/level_0/thread/attribute.c fll/level_0/thread/attributes.c fll/level_0/thread/attributess.c build_sources_program-thread fll/level_0/thread/barrier.c fll/level_0/thread/barriers.c fll/level_0/thread/barrierss.c fll/level_0/thread/barrier_attribute.c fll/level_0/thread/barrier_attributes.c fll/level_0/thread/barrier_attributess.c fll/level_0/thread/barrier_full.c fll/level_0/thread/barrier_fulls.c fll/level_0/thread/barrier_fullss.c +build_sources_program-thread fll/level_0/thread/common.c build_sources_program-thread fll/level_0/thread/condition.c fll/level_0/thread/conditions.c fll/level_0/thread/conditionss.c fll/level_0/thread/condition_attribute.c fll/level_0/thread/condition_attributes.c fll/level_0/thread/condition_attributess.c fll/level_0/thread/condition_full.c fll/level_0/thread/condition_fulls.c fll/level_0/thread/condition_fullss.c build_sources_program-thread fll/level_0/thread/id.c fll/level_0/thread/ids.c fll/level_0/thread/idss.c build_sources_program-thread fll/level_0/thread/key.c fll/level_0/thread/keys.c fll/level_0/thread/keyss.c diff --git a/build/stand_alone/example.config.h b/build/stand_alone/example.config.h index ebb8cf1..ec55be2 100644 --- a/build/stand_alone/example.config.h +++ b/build/stand_alone/example.config.h @@ -1023,6 +1023,7 @@ #define _di_f_thread_barrierss_t_ #define _di_f_thread_caller_ //#define _di_f_thread_cancel_ +#define _di_f_thread_cancel_d_ //#define _di_f_thread_cancel_state_set_ #define _di_f_thread_cancel_test_ #define _di_f_thread_cancel_type_set_ @@ -1121,7 +1122,6 @@ #define _di_f_thread_lockss_destroy_callback_ #define _di_f_thread_lockss_t_ #define _di_f_thread_mutex_attribute_create_ -#define _di_f_thread_mutex_attribute_d_ #define _di_f_thread_mutex_attribute_delete_ #define _di_f_thread_mutex_attribute_priority_ceiling_get_ #define _di_f_thread_mutex_attribute_priority_ceiling_set_ @@ -1157,7 +1157,10 @@ #define _di_f_thread_mutex_lock_try_ #define _di_f_thread_mutex_priority_ceiling_get_ #define _di_f_thread_mutex_priority_ceiling_set_ +#define _di_f_thread_mutex_protocol_d_ +#define _di_f_thread_mutex_robust_d_ #define _di_f_thread_mutex_t_ +#define _di_f_thread_mutex_type_d_ #define _di_f_thread_mutex_unlock_ #define _di_f_thread_mutexs_delete_callback_ #define _di_f_thread_mutexs_destroy_callback_ @@ -1171,9 +1174,12 @@ #define _di_f_thread_once_t_ #define _di_f_thread_onces_t_ #define _di_f_thread_oncess_t_ +#define _di_f_thread_process_d_ +#define _di_f_thread_schedule_d_ #define _di_f_thread_scheduler_parameter_get_ #define _di_f_thread_scheduler_parameter_set_ #define _di_f_thread_scheduler_priority_set_ +#define _di_f_thread_scope_d_ #define _di_f_thread_semaphore_create_ #define _di_f_thread_semaphore_delete_ #define _di_f_thread_semaphore_file_close_ diff --git a/build/stand_alone/example.settings b/build/stand_alone/example.settings index 06caba1..2543aa6 100644 --- a/build/stand_alone/example.settings +++ b/build/stand_alone/example.settings @@ -57,6 +57,7 @@ build_sources_program fll/level_0/utf/private-dynamics.c fll/level_0/utf/private build_sources_program-thread fll/level_0/thread.c build_sources_program-thread fll/level_0/thread/attribute.c fll/level_0/thread/attributes.c fll/level_0/thread/attributess.c build_sources_program-thread fll/level_0/thread/barrier.c fll/level_0/thread/barriers.c fll/level_0/thread/barrierss.c fll/level_0/thread/barrier_attribute.c fll/level_0/thread/barrier_attributes.c fll/level_0/thread/barrier_attributess.c fll/level_0/thread/barrier_full.c fll/level_0/thread/barrier_fulls.c fll/level_0/thread/barrier_fullss.c +build_sources_program-thread fll/level_0/thread/common.c build_sources_program-thread fll/level_0/thread/condition.c fll/level_0/thread/conditions.c fll/level_0/thread/conditionss.c fll/level_0/thread/condition_attribute.c fll/level_0/thread/condition_attributes.c fll/level_0/thread/condition_attributess.c fll/level_0/thread/condition_full.c fll/level_0/thread/condition_fulls.c fll/level_0/thread/condition_fullss.c build_sources_program-thread fll/level_0/thread/id.c fll/level_0/thread/ids.c fll/level_0/thread/idss.c build_sources_program-thread fll/level_0/thread/key.c fll/level_0/thread/keys.c fll/level_0/thread/keyss.c diff --git a/build/stand_alone/fake.config.h b/build/stand_alone/fake.config.h index f97510e..aeb005a 100644 --- a/build/stand_alone/fake.config.h +++ b/build/stand_alone/fake.config.h @@ -1514,6 +1514,7 @@ #define _di_f_thread_barrierss_t_ #define _di_f_thread_caller_ //#define _di_f_thread_cancel_ +#define _di_f_thread_cancel_d_ //#define _di_f_thread_cancel_state_set_ #define _di_f_thread_cancel_test_ #define _di_f_thread_cancel_type_set_ @@ -1612,7 +1613,6 @@ #define _di_f_thread_lockss_destroy_callback_ #define _di_f_thread_lockss_t_ #define _di_f_thread_mutex_attribute_create_ -#define _di_f_thread_mutex_attribute_d_ #define _di_f_thread_mutex_attribute_delete_ #define _di_f_thread_mutex_attribute_priority_ceiling_get_ #define _di_f_thread_mutex_attribute_priority_ceiling_set_ @@ -1622,7 +1622,7 @@ #define _di_f_thread_mutex_attribute_robust_set_ #define _di_f_thread_mutex_attribute_shared_get_ #define _di_f_thread_mutex_attribute_shared_set_ -#define _di_f_thread_mutex_attribute_t_ +//#define _di_f_thread_mutex_attribute_t_ #define _di_f_thread_mutex_attribute_type_get_ #define _di_f_thread_mutex_attribute_type_set_ #define _di_f_thread_mutex_attributes_delete_callback_ @@ -1648,7 +1648,10 @@ #define _di_f_thread_mutex_lock_try_ #define _di_f_thread_mutex_priority_ceiling_get_ #define _di_f_thread_mutex_priority_ceiling_set_ +#define _di_f_thread_mutex_protocol_d_ +#define _di_f_thread_mutex_robust_d_ #define _di_f_thread_mutex_t_ +#define _di_f_thread_mutex_type_d_ #define _di_f_thread_mutex_unlock_ #define _di_f_thread_mutexs_delete_callback_ #define _di_f_thread_mutexs_destroy_callback_ @@ -1662,9 +1665,12 @@ #define _di_f_thread_once_t_ #define _di_f_thread_onces_t_ #define _di_f_thread_oncess_t_ +#define _di_f_thread_process_d_ +#define _di_f_thread_schedule_d_ #define _di_f_thread_scheduler_parameter_get_ #define _di_f_thread_scheduler_parameter_set_ #define _di_f_thread_scheduler_priority_set_ +#define _di_f_thread_scope_d_ #define _di_f_thread_semaphore_create_ #define _di_f_thread_semaphore_delete_ #define _di_f_thread_semaphore_file_close_ diff --git a/build/stand_alone/fake.settings b/build/stand_alone/fake.settings index f128210..12d8e36 100644 --- a/build/stand_alone/fake.settings +++ b/build/stand_alone/fake.settings @@ -71,6 +71,7 @@ build_sources_program fll/level_0/utf/private-dynamics.c fll/level_0/utf/private build_sources_program-thread fll/level_0/thread.c build_sources_program-thread fll/level_0/thread/attribute.c fll/level_0/thread/attributes.c fll/level_0/thread/attributess.c build_sources_program-thread fll/level_0/thread/barrier.c fll/level_0/thread/barriers.c fll/level_0/thread/barrierss.c fll/level_0/thread/barrier_attribute.c fll/level_0/thread/barrier_attributes.c fll/level_0/thread/barrier_attributess.c fll/level_0/thread/barrier_full.c fll/level_0/thread/barrier_fulls.c fll/level_0/thread/barrier_fullss.c +build_sources_program-thread fll/level_0/thread/common.c build_sources_program-thread fll/level_0/thread/condition.c fll/level_0/thread/conditions.c fll/level_0/thread/conditionss.c fll/level_0/thread/condition_attribute.c fll/level_0/thread/condition_attributes.c fll/level_0/thread/condition_attributess.c fll/level_0/thread/condition_full.c fll/level_0/thread/condition_fulls.c fll/level_0/thread/condition_fullss.c build_sources_program-thread fll/level_0/thread/id.c fll/level_0/thread/ids.c fll/level_0/thread/idss.c build_sources_program-thread fll/level_0/thread/key.c fll/level_0/thread/keys.c fll/level_0/thread/keyss.c diff --git a/build/stand_alone/firewall.config.h b/build/stand_alone/firewall.config.h index 5dcd7cc..05101ee 100644 --- a/build/stand_alone/firewall.config.h +++ b/build/stand_alone/firewall.config.h @@ -1562,6 +1562,7 @@ #define _di_f_thread_barrierss_t_ #define _di_f_thread_caller_ //#define _di_f_thread_cancel_ +#define _di_f_thread_cancel_d_ //#define _di_f_thread_cancel_state_set_ #define _di_f_thread_cancel_test_ #define _di_f_thread_cancel_type_set_ @@ -1660,7 +1661,6 @@ #define _di_f_thread_lockss_destroy_callback_ #define _di_f_thread_lockss_t_ #define _di_f_thread_mutex_attribute_create_ -#define _di_f_thread_mutex_attribute_d_ #define _di_f_thread_mutex_attribute_delete_ #define _di_f_thread_mutex_attribute_priority_ceiling_get_ #define _di_f_thread_mutex_attribute_priority_ceiling_set_ @@ -1696,7 +1696,10 @@ #define _di_f_thread_mutex_lock_try_ #define _di_f_thread_mutex_priority_ceiling_get_ #define _di_f_thread_mutex_priority_ceiling_set_ +#define _di_f_thread_mutex_protocol_d_ +#define _di_f_thread_mutex_robust_d_ #define _di_f_thread_mutex_t_ +#define _di_f_thread_mutex_type_d_ #define _di_f_thread_mutex_unlock_ #define _di_f_thread_mutexs_delete_callback_ #define _di_f_thread_mutexs_destroy_callback_ @@ -1710,9 +1713,12 @@ #define _di_f_thread_once_t_ #define _di_f_thread_onces_t_ #define _di_f_thread_oncess_t_ +#define _di_f_thread_process_d_ +#define _di_f_thread_schedule_d_ #define _di_f_thread_scheduler_parameter_get_ #define _di_f_thread_scheduler_parameter_set_ #define _di_f_thread_scheduler_priority_set_ +#define _di_f_thread_scope_d_ #define _di_f_thread_semaphore_create_ #define _di_f_thread_semaphore_delete_ #define _di_f_thread_semaphore_file_close_ diff --git a/build/stand_alone/firewall.settings b/build/stand_alone/firewall.settings index f0d3f3b..04ce9ba 100644 --- a/build/stand_alone/firewall.settings +++ b/build/stand_alone/firewall.settings @@ -68,6 +68,7 @@ build_sources_program fll/level_0/utf/private-dynamics.c fll/level_0/utf/private build_sources_program-thread fll/level_0/thread.c build_sources_program-thread fll/level_0/thread/attribute.c fll/level_0/thread/attributes.c fll/level_0/thread/attributess.c build_sources_program-thread fll/level_0/thread/barrier.c fll/level_0/thread/barriers.c fll/level_0/thread/barrierss.c fll/level_0/thread/barrier_attribute.c fll/level_0/thread/barrier_attributes.c fll/level_0/thread/barrier_attributess.c fll/level_0/thread/barrier_full.c fll/level_0/thread/barrier_fulls.c fll/level_0/thread/barrier_fullss.c +build_sources_program-thread fll/level_0/thread/common.c build_sources_program-thread fll/level_0/thread/condition.c fll/level_0/thread/conditions.c fll/level_0/thread/conditionss.c fll/level_0/thread/condition_attribute.c fll/level_0/thread/condition_attributes.c fll/level_0/thread/condition_attributess.c fll/level_0/thread/condition_full.c fll/level_0/thread/condition_fulls.c fll/level_0/thread/condition_fullss.c build_sources_program-thread fll/level_0/thread/id.c fll/level_0/thread/ids.c fll/level_0/thread/idss.c build_sources_program-thread fll/level_0/thread/key.c fll/level_0/thread/keys.c fll/level_0/thread/keyss.c diff --git a/build/stand_alone/utf8.config.h b/build/stand_alone/utf8.config.h index 3e57821..de55bea 100644 --- a/build/stand_alone/utf8.config.h +++ b/build/stand_alone/utf8.config.h @@ -1090,6 +1090,7 @@ #define _di_f_thread_barrierss_t_ #define _di_f_thread_caller_ //#define _di_f_thread_cancel_ +#define _di_f_thread_cancel_d_ //#define _di_f_thread_cancel_state_set_ #define _di_f_thread_cancel_test_ #define _di_f_thread_cancel_type_set_ @@ -1188,7 +1189,6 @@ #define _di_f_thread_lockss_destroy_callback_ #define _di_f_thread_lockss_t_ #define _di_f_thread_mutex_attribute_create_ -#define _di_f_thread_mutex_attribute_d_ #define _di_f_thread_mutex_attribute_delete_ #define _di_f_thread_mutex_attribute_priority_ceiling_get_ #define _di_f_thread_mutex_attribute_priority_ceiling_set_ @@ -1224,7 +1224,10 @@ #define _di_f_thread_mutex_lock_try_ #define _di_f_thread_mutex_priority_ceiling_get_ #define _di_f_thread_mutex_priority_ceiling_set_ +#define _di_f_thread_mutex_protocol_d_ +#define _di_f_thread_mutex_robust_d_ #define _di_f_thread_mutex_t_ +#define _di_f_thread_mutex_type_d_ #define _di_f_thread_mutex_unlock_ #define _di_f_thread_mutexs_delete_callback_ #define _di_f_thread_mutexs_destroy_callback_ @@ -1238,9 +1241,12 @@ #define _di_f_thread_once_t_ #define _di_f_thread_onces_t_ #define _di_f_thread_oncess_t_ +#define _di_f_thread_process_d_ +#define _di_f_thread_schedule_d_ #define _di_f_thread_scheduler_parameter_get_ #define _di_f_thread_scheduler_parameter_set_ #define _di_f_thread_scheduler_priority_set_ +#define _di_f_thread_scope_d_ #define _di_f_thread_semaphore_create_ #define _di_f_thread_semaphore_delete_ #define _di_f_thread_semaphore_file_close_ diff --git a/build/stand_alone/utf8.settings b/build/stand_alone/utf8.settings index a10c841..1b28a5e 100644 --- a/build/stand_alone/utf8.settings +++ b/build/stand_alone/utf8.settings @@ -58,6 +58,7 @@ build_sources_program fll/level_0/utf/private-dynamics.c fll/level_0/utf/private build_sources_program-thread fll/level_0/thread.c build_sources_program-thread fll/level_0/thread/attribute.c fll/level_0/thread/attributes.c fll/level_0/thread/attributess.c build_sources_program-thread fll/level_0/thread/barrier.c fll/level_0/thread/barriers.c fll/level_0/thread/barrierss.c fll/level_0/thread/barrier_attribute.c fll/level_0/thread/barrier_attributes.c fll/level_0/thread/barrier_attributess.c fll/level_0/thread/barrier_full.c fll/level_0/thread/barrier_fulls.c fll/level_0/thread/barrier_fullss.c +build_sources_program-thread fll/level_0/thread/common.c build_sources_program-thread fll/level_0/thread/condition.c fll/level_0/thread/conditions.c fll/level_0/thread/conditionss.c fll/level_0/thread/condition_attribute.c fll/level_0/thread/condition_attributes.c fll/level_0/thread/condition_attributess.c fll/level_0/thread/condition_full.c fll/level_0/thread/condition_fulls.c fll/level_0/thread/condition_fullss.c build_sources_program-thread fll/level_0/thread/id.c fll/level_0/thread/ids.c fll/level_0/thread/idss.c build_sources_program-thread fll/level_0/thread/key.c fll/level_0/thread/keys.c fll/level_0/thread/keyss.c diff --git a/level_0/f_thread/c/thread.h b/level_0/f_thread/c/thread.h index 8838f28..c85edb5 100644 --- a/level_0/f_thread/c/thread.h +++ b/level_0/f_thread/c/thread.h @@ -32,6 +32,7 @@ #include // FLL-0 thread includes. +#include #include #include #include diff --git a/level_0/f_thread/c/thread/common.c b/level_0/f_thread/c/thread/common.c new file mode 100644 index 0000000..1443b36 --- /dev/null +++ b/level_0/f_thread/c/thread/common.c @@ -0,0 +1,9 @@ +#include "../thread.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} // extern "C" +#endif diff --git a/level_0/f_thread/c/thread/common.h b/level_0/f_thread/c/thread/common.h new file mode 100644 index 0000000..5a3d637 --- /dev/null +++ b/level_0/f_thread/c/thread/common.h @@ -0,0 +1,115 @@ +/** + * FLL - Level 0 + * + * Project: Thread + * API Version: 0.7 + * Licenses: lgpl-2.1-or-later + * + * Defines common data to be used for/by POSIX thread related functionality. + * + * This is auto-included by thread.h and should not need to be explicitly included. + */ +#ifndef _F_thread_common_h +#define _F_thread_common_h + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Thread cancel defines. + * + * f_thread_cancel_*_d: + * - asynchronous: Thread can be cancelled at any time. + * - defer: Thread is only cancellable at a cancellation point. + * - disable: Disable thread cancellation. + * - enable: Enable thread cancellation. + */ +#ifndef _di_f_thread_cancel_d_ + #define f_thread_cancel_asynchronous_d PTHREAD_CANCEL_ASYNCHRONOUS + #define f_thread_cancel_defer_d PTHREAD_CANCEL_DEFERRED + #define f_thread_cancel_disable_d PTHREAD_CANCEL_DISABLE + #define f_thread_cancel_enable_d PTHREAD_CANCEL_ENABLE +#endif // _di_f_thread_cancel_d_ + +/** + * Thread mutex attribute protocol defines. + * + * f_thread_mutex_protocol_*_d: + * - inherit: Use inherit protocol; operate using the highest priority of everything currently holding the lock. + * - none: No special protocol; priority and scheduling are unaffected by thread ownership. + * - protect: Use protect protocol; use explicitly defined priority ceiling settings. + */ +#ifndef _di_f_thread_mutex_protocol_d_ + #define f_thread_mutex_protocol_inherit_d PTHREAD_PRIO_INHERIT + #define f_thread_mutex_protocol_none_d PTHREAD_PRIO_NONE + #define f_thread_mutex_protocol_protect_d PTHREAD_PRIO_PROTECT +#endif // _di_f_thread_mutex_protocol_d_ + +/** + * Thread mutex attribute robust defines. + * + * f_thread_mutex_robust_*_d: + * - okay: The thread is considered to be in a robust state. + * - stalled: The thread is considered to be in a stalled state. + */ +#ifndef _di_f_thread_mutex_robust_d_ + #define f_thread_mutex_robust_okay_d PTHREAD_MUTEX_ROBUST + #define f_thread_mutex_robust_stalled_d PTHREAD_MUTEX_STALLED +#endif // _di_f_thread_mutex_robust_d_ + +/** + * Thread mutex attribute type defines. + * + * f_thread_mutex_type_*_d: + * - error_check: Handle deadlock and ownership detection and return on error. + * - normal: The normal mutex type (also the default type and is the POSIX standard compliant version of PTHREAD_MUTEX_DEFAULT). + * - recursive: Recursive lock (uses a count on locks, mutexs become unlocked when count is 0). + */ +#ifndef _di_f_thread_mutex_type_d_ + #define f_thread_mutex_type_error_check_d PTHREAD_MUTEX_ERRORCHECK + #define f_thread_mutex_type_normal_d PTHREAD_MUTEX_RECURSIVE + #define f_thread_mutex_type_recursive_d PTHREAD_MUTEX_NORMAL +#endif // _di_f_thread_mutex_type_d_ + +/** + * Thread process defines. + * + * f_thread_process_*_d: + * - private: The mutex is shared only with other threads in the same process. + * - shared: The mutex is shared between any threads with memory access to the mutex object (even across processes). + */ +#ifndef _di_f_thread_process_d_ + #define f_thread_process_private_d PTHREAD_PROCESS_PRIVATE + #define f_thread_process_shared_d PTHREAD_PROCESS_SHARED +#endif // _di_f_thread_process_d_ + +/** + * Thread scheduler defines. + * + * f_thread_schedule_*_d: + * - explicit: Use the explicitly assigned scheduling. + * - inherit: Use the scheduling from a parent thread or process. + */ +#ifndef _di_f_thread_schedule_d_ + #define f_thread_schedule_explicit_d PTHREAD_EXPLICIT_SCHED + #define f_thread_schedule_inherit_d PTHREAD_INHERIT_SCHED +#endif // _di_f_thread_schedule_d_ + +/** + * Thread scope defines. + * + * f_thread_scope_*_d: + * - process: The thread vies for resources with all threads in the same process with the same contention scope. + * - system: The thread vies for resources with all processes on the system with the same scheduling domain. + */ +#ifndef _di_f_thread_scope_d_ + #define f_thread_scope_process_d PTHREAD_SCOPE_PROCESS + #define f_thread_scope_system_d PTHREAD_SCOPE_SYSTEM +#endif // _di_f_thread_scope_d_ + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // _F_thread_common_h diff --git a/level_0/f_thread/c/thread/mutex_attribute.h b/level_0/f_thread/c/thread/mutex_attribute.h index 4cfbb32..ce23e6a 100644 --- a/level_0/f_thread/c/thread/mutex_attribute.h +++ b/level_0/f_thread/c/thread/mutex_attribute.h @@ -17,20 +17,6 @@ extern "C" { #endif /** - * Mutex attribute defines. - * - * f_thread_mutex_attribute_*_d: - * - error_check: Handle deadlock and ownership detection and return on error. - * - normal: The normal mutex type (also the default type and is the POSIX standard compliant version of PTHREAD_MUTEX_DEFAULT). - * - recursive: Recursive lock (uses a count on locks, mutexs become unlocked when count is 0). - */ -#ifndef _di_f_thread_mutex_attribute_d_ - #define f_thread_mutex_attribute_error_check_d PTHREAD_MUTEX_ERRORCHECK - #define f_thread_mutex_attribute_normal_d PTHREAD_MUTEX_RECURSIVE - #define f_thread_mutex_attribute_recursive_d PTHREAD_MUTEX_NORMAL -#endif // _di_f_thread_mutex_attribute_d_ - -/** * A typedef representing pthread_mutex_attribute_t. */ #ifndef _di_f_thread_mutex_attribute_t_ diff --git a/level_0/f_thread/data/build/settings b/level_0/f_thread/data/build/settings index 8caa853..a1667be 100644 --- a/level_0/f_thread/data/build/settings +++ b/level_0/f_thread/data/build/settings @@ -44,6 +44,7 @@ build_libraries_static-individual -l:libf_memory.a -l:libf_string.a build_sources_library thread.c build_sources_library thread/attribute.c thread/attributes.c thread/attributess.c build_sources_library thread/barrier.c thread/barriers.c thread/barrierss.c thread/barrier_attribute.c thread/barrier_attributes.c thread/barrier_attributess.c thread/barrier_full.c thread/barrier_fulls.c thread/barrier_fullss.c +build_sources_library thread/common.c build_sources_library thread/condition.c thread/conditions.c thread/conditionss.c thread/condition_attribute.c thread/condition_attributes.c thread/condition_attributess.c thread/condition_full.c thread/condition_fulls.c thread/condition_fullss.c build_sources_library thread/id.c thread/ids.c thread/idss.c build_sources_library thread/key.c thread/keys.c thread/keyss.c @@ -57,6 +58,7 @@ build_sources_library thread/spin.c thread/spins.c thread/spinss.c build_sources_headers thread.h build_sources_headers thread/attribute.h thread/attributes.h thread/attributess.h build_sources_headers thread/barrier.h thread/barriers.h thread/barrierss.h thread/barrier_attribute.h thread/barrier_attributes.h thread/barrier_attributess.h thread/barrier_full.h thread/barrier_fulls.h thread/barrier_fullss.h +build_sources_headers thread/common.h build_sources_headers thread/condition.h thread/conditions.h thread/conditionss.h thread/condition_attribute.h thread/condition_attributes.h thread/condition_attributess.h thread/condition_full.h thread/condition_fulls.h thread/condition_fullss.h build_sources_headers thread/id.h thread/ids.h thread/idss.h build_sources_headers thread/key.h thread/keys.h thread/keyss.h diff --git a/level_0/f_thread/data/build/settings-mocks b/level_0/f_thread/data/build/settings-mocks index 7c08f76..a4048e7 100644 --- a/level_0/f_thread/data/build/settings-mocks +++ b/level_0/f_thread/data/build/settings-mocks @@ -33,6 +33,7 @@ build_libraries-individual -lf_memory -lf_string build_sources_library thread.c build_sources_library thread/attribute.c thread/attributes.c thread/attributess.c build_sources_library thread/barrier.c thread/barriers.c thread/barrierss.c thread/barrier_attribute.c thread/barrier_attributes.c thread/barrier_attributess.c thread/barrier_full.c thread/barrier_fulls.c thread/barrier_fullss.c +build_sources_library thread/common.c build_sources_library thread/condition.c thread/conditions.c thread/conditionss.c thread/condition_attribute.c thread/condition_attributes.c thread/condition_attributess.c thread/condition_full.c thread/condition_fulls.c thread/condition_fullss.c build_sources_library thread/id.c thread/ids.c thread/idss.c build_sources_library thread/key.c thread/keys.c thread/keyss.c @@ -48,6 +49,7 @@ build_sources_library ../../tests/unit/c/mock-thread.c build_sources_headers thread.h build_sources_headers thread/attribute.h thread/attributes.h thread/attributess.h build_sources_headers thread/barrier.h thread/barriers.h thread/barrierss.h thread/barrier_attribute.h thread/barrier_attributes.h thread/barrier_attributess.h thread/barrier_full.h thread/barrier_fulls.h thread/barrier_fullss.h +build_sources_headers thread/common.h build_sources_headers thread/condition.h thread/conditions.h thread/conditionss.h thread/condition_attribute.h thread/condition_attributes.h thread/condition_attributess.h thread/condition_full.h thread/condition_fulls.h thread/condition_fullss.h build_sources_headers thread/id.h thread/ids.h thread/idss.h build_sources_headers thread/key.h thread/keys.h thread/keyss.h -- 1.8.3.1