]> 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:48:48 +0000 (20:48 -0500)
committerKevin Day <kevin@kevux.org>
Mon, 8 Apr 2024 02:49:07 +0000 (21:49 -0500)
The pthread mutex prioceiling and pthread mutex attr 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 8b119c397afabcec65bf150813b768c210fc5296..e75f23f417c0aa7fa13b39de825864bfeb9f1584 100644 (file)
@@ -1308,7 +1308,16 @@ extern "C" {
   }
 #endif // _di_f_thread_mutex_attribute_delete_
 
-#ifndef _di_f_thread_mutex_attribute_priority_ceiling_get_
+#if defined(_pthread_mutex_prioceiling_unsupported_) && !defined(_di_f_thread_mutex_attribute_priority_ceiling_get_)
+  f_status_t f_thread_mutex_attribute_priority_ceiling_get(const f_thread_mutex_attribute_t * const attribute, int * const ceiling) {
+    #ifndef _di_level_0_parameter_checking_
+      if (!attribute) 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_implemented_not);
+  }
+#elif !defined(_di_f_thread_mutex_attribute_priority_ceiling_get_)
   f_status_t f_thread_mutex_attribute_priority_ceiling_get(const f_thread_mutex_attribute_t * const attribute, int * const ceiling) {
     #ifndef _di_level_0_parameter_checking_
       if (!attribute) return F_status_set_error(F_parameter);
@@ -1328,7 +1337,15 @@ extern "C" {
   }
 #endif // _di_f_thread_mutex_attribute_priority_ceiling_get_
 
-#ifndef _di_f_thread_mutex_attribute_priority_ceiling_set_
+#if defined(_pthread_mutex_prioceiling_unsupported_) && !defined(_di_f_thread_mutex_attribute_priority_ceiling_set_)
+  f_status_t f_thread_mutex_attribute_priority_ceiling_set(const int ceiling, f_thread_mutex_attribute_t * const attribute) {
+    #ifndef _di_level_0_parameter_checking_
+      if (!attribute) return F_status_set_error(F_parameter);
+    #endif // _di_level_0_parameter_checking_
+
+    return F_status_set_error(F_implemented_not);
+  }
+#elif !defined(_di_f_thread_mutex_attribute_priority_ceiling_set_)
   f_status_t f_thread_mutex_attribute_priority_ceiling_set(const int ceiling, f_thread_mutex_attribute_t * const attribute) {
     #ifndef _di_level_0_parameter_checking_
       if (!attribute) return F_status_set_error(F_parameter);
@@ -1347,7 +1364,16 @@ extern "C" {
   }
 #endif // _di_f_thread_mutex_attribute_priority_ceiling_set_
 
-#ifndef _di_f_thread_mutex_attribute_protocol_get_
+#if defined(_pthread_mutex_prioceiling_unsupported_) && !defined(_di_f_thread_mutex_attribute_protocol_get_)
+  f_status_t f_thread_mutex_attribute_protocol_get(const f_thread_mutex_attribute_t * const attribute, int * const protocol) {
+    #ifndef _di_level_0_parameter_checking_
+      if (!attribute) return F_status_set_error(F_parameter);
+      if (!protocol) return F_status_set_error(F_parameter);
+    #endif // _di_level_0_parameter_checking_
+
+    return F_status_set_error(F_implemented_not);
+  }
+#elif !defined(_di_f_thread_mutex_attribute_protocol_get_)
   f_status_t f_thread_mutex_attribute_protocol_get(const f_thread_mutex_attribute_t * const attribute, int * const protocol) {
     #ifndef _di_level_0_parameter_checking_
       if (!attribute) return F_status_set_error(F_parameter);
@@ -1549,7 +1575,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_implemented_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);
@@ -1567,9 +1602,17 @@ extern "C" {
 
     return F_none;
   }
-#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_implemented_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);
@@ -1590,7 +1633,7 @@ extern "C" {
 
     return F_none;
   }
-#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().