]> Kevux Git Server - fll/commitdiff
Update: Add support for disable pthread mutex prioceiling for systems that do not...
authorKevin Day <kevin@kevux.org>
Mon, 8 Apr 2024 01:53:03 +0000 (20:53 -0500)
committerKevin Day <kevin@kevux.org>
Mon, 8 Apr 2024 01:53:03 +0000 (20:53 -0500)
The pthread mutex prioceiling functions are not supported on PostmarketOS for Pinephone.
The PostmarketOS for Pinephone is an A64 Arm system based on the Alpine Linux distribution.

level_0/f_thread/c/thread.c
level_0/f_thread/data/build/defines

index c9344ef02b0947ef3af5ac26a2bd887fc3247050..3edcb963eb347cb852119bd782e20a04f3e85ee9 100644 (file)
@@ -1625,7 +1625,16 @@ extern "C" {
   }
 #endif // _di_f_thread_mutex_lock_try_
 
-#ifndef _di_f_thread_mutex_priority_ceiling_get_
+#if defined(_pthread_mutex_prioceiling_unsupported_) && !defined(_di_f_thread_mutex_priority_ceiling_get_)
+  f_status_t f_thread_mutex_priority_ceiling_get(f_thread_mutex_t * const mutex, int * const ceiling) {
+    #ifndef _di_level_0_parameter_checking_
+      if (!mutex) return F_status_set_error(F_parameter);
+      if (!ceiling) return F_status_set_error(F_parameter);
+    #endif // _di_level_0_parameter_checking_
+
+    return F_status_set_error(F_implement_not);
+  }
+#elif !defined(_di_f_thread_mutex_priority_ceiling_get_)
   f_status_t f_thread_mutex_priority_ceiling_get(f_thread_mutex_t * const mutex, int * const ceiling) {
     #ifndef _di_level_0_parameter_checking_
       if (!mutex) return F_status_set_error(F_parameter);
@@ -1643,9 +1652,17 @@ extern "C" {
 
     return F_okay;
   }
-#endif // _di_f_thread_mutex_priority_ceiling_get_
+#endif // defined(_pthread_mutex_prioceiling_unsupported_) && !defined(_di_f_thread_mutex_priority_ceiling_get_)
 
-#ifndef _di_f_thread_mutex_priority_ceiling_set_
+#if defined(_pthread_mutex_prioceiling_unsupported_) && !defined(_di_f_thread_mutex_priority_ceiling_set_)
+  f_status_t f_thread_mutex_priority_ceiling_set(const int ceiling, f_thread_mutex_t * const mutex, int * const previous) {
+    #ifndef _di_level_0_parameter_checking_
+      if (!mutex) return F_status_set_error(F_parameter);
+    #endif // _di_level_0_parameter_checking_
+
+    return F_status_set_error(F_implement_not);
+  }
+#elif !defined(_di_f_thread_mutex_priority_ceiling_set_)
   f_status_t f_thread_mutex_priority_ceiling_set(const int ceiling, f_thread_mutex_t * const mutex, int * const previous) {
     #ifndef _di_level_0_parameter_checking_
       if (!mutex) return F_status_set_error(F_parameter);
@@ -1666,7 +1683,7 @@ extern "C" {
 
     return F_okay;
   }
-#endif // _di_f_thread_mutex_priority_ceiling_set_
+#endif // defined(_pthread_mutex_prioceiling_unsupported_) && !defined(_di_f_thread_mutex_priority_ceiling_set_)
 
 #ifndef _di_f_thread_mutex_unlock_
   f_status_t f_thread_mutex_unlock(f_thread_mutex_t * const mutex) {
index 29febee57aee6559c48f52fb578e58b89a30d974..a7c99dade858968e8f2948a2a4978c0ea067cc83 100644 (file)
@@ -2,4 +2,5 @@
 
 _di_thread_support_ disables thread support, which is intended to disable this entire f_thread project. This is not directly used by this library, but is instead used by other libraries to not include f_thread (such as special compilations like monolithic). Future versions may potentially support this, providing stubs.
 _pthread_attr_unsupported_ Disable non-portable functionality associated with pthread_attr.
+_pthread_mutex_prioceiling_unsupported_ Disable mutex_prioceiling related functionality for systems that do not support it.
 _pthread_sigqueue_unsupported_ Disable GNU specific sigqueue().