]> Kevux Git Server - fll/commitdiff
Update: Provide more granular error status codes in the thread full functions.
authorKevin Day <Kevin@kevux.org>
Sun, 2 Nov 2025 22:03:15 +0000 (16:03 -0600)
committerKevin Day <Kevin@kevux.org>
Sun, 2 Nov 2025 22:03:15 +0000 (16:03 -0600)
The LIBC pthread implementations fail to provide a way to truly verify that thread data is properly allocated or not.

The full thread types have two different thread related memory freeing functions.
If the first function fails, then the second structure is still allocated.

The previous behavior provided no way to distinguish between the two different failures.
These more granular status codes allow for such distinction now.

This allows the caller to manually try to de-allocate other parts even if the first de-allocation failed.

44 files changed:
level_0/f_thread/c/thread/barrier_full.c
level_0/f_thread/c/thread/barrier_full.h
level_0/f_thread/c/thread/barrier_fulls.c
level_0/f_thread/c/thread/barrier_fulls.h
level_0/f_thread/c/thread/barrier_fullss.c
level_0/f_thread/c/thread/barrier_fullss.h
level_0/f_thread/c/thread/condition_full.c
level_0/f_thread/c/thread/condition_full.h
level_0/f_thread/c/thread/condition_fulls.c
level_0/f_thread/c/thread/condition_fulls.h
level_0/f_thread/c/thread/condition_fullss.c
level_0/f_thread/c/thread/condition_fullss.h
level_0/f_thread/c/thread/lock_full.c
level_0/f_thread/c/thread/lock_full.h
level_0/f_thread/c/thread/lock_fulls.c
level_0/f_thread/c/thread/lock_fulls.h
level_0/f_thread/c/thread/lock_fullss.c
level_0/f_thread/c/thread/lock_fullss.h
level_0/f_thread/c/thread/mutex_full.c
level_0/f_thread/c/thread/mutex_full.h
level_0/f_thread/c/thread/mutex_fulls.c
level_0/f_thread/c/thread/mutex_fulls.h
level_0/f_thread/c/thread/mutex_fullss.c
level_0/f_thread/c/thread/mutex_fullss.h
level_0/f_thread/tests/unit/c/test-thread-barrier_full_delete.c
level_0/f_thread/tests/unit/c/test-thread-barrier_fulls_delete_callback.c
level_0/f_thread/tests/unit/c/test-thread-barrier_fulls_destroy_callback.c
level_0/f_thread/tests/unit/c/test-thread-barrier_fullss_delete_callback.c
level_0/f_thread/tests/unit/c/test-thread-barrier_fullss_destroy_callback.c
level_0/f_thread/tests/unit/c/test-thread-condition_full_delete.c
level_0/f_thread/tests/unit/c/test-thread-condition_fulls_delete_callback.c
level_0/f_thread/tests/unit/c/test-thread-condition_fulls_destroy_callback.c
level_0/f_thread/tests/unit/c/test-thread-condition_fullss_delete_callback.c
level_0/f_thread/tests/unit/c/test-thread-condition_fullss_destroy_callback.c
level_0/f_thread/tests/unit/c/test-thread-lock_full_delete.c
level_0/f_thread/tests/unit/c/test-thread-lock_fulls_delete_callback.c
level_0/f_thread/tests/unit/c/test-thread-lock_fulls_destroy_callback.c
level_0/f_thread/tests/unit/c/test-thread-lock_fullss_delete_callback.c
level_0/f_thread/tests/unit/c/test-thread-lock_fullss_destroy_callback.c
level_0/f_thread/tests/unit/c/test-thread-mutex_full_delete.c
level_0/f_thread/tests/unit/c/test-thread-mutex_fulls_delete_callback.c
level_0/f_thread/tests/unit/c/test-thread-mutex_fulls_destroy_callback.c
level_0/f_thread/tests/unit/c/test-thread-mutex_fullss_delete_callback.c
level_0/f_thread/tests/unit/c/test-thread-mutex_fullss_destroy_callback.c

index f80ee688268491afb16e3625a7d0912cae205688..c05215e42424ec4eba289c3a4090e5bb5a5f4738 100644 (file)
@@ -17,11 +17,11 @@ extern "C" {
         if (error == EBUSY) return F_status_set_error(F_busy);
         if (error == EINVAL) return F_status_set_error(F_parameter);
 
-        return F_status_set_error(F_failure);
+        return F_status_set_error(F_barrier);
       }
     }
 
-    return pthread_barrierattr_destroy(&full->attribute) ? F_status_set_error(F_failure) : F_okay;
+    return pthread_barrierattr_destroy(&full->attribute) ? F_status_set_error(F_attribute) : F_okay;
   }
 #endif // _di_f_thread_barrier_full_delete_
 
index 3520616aeee9dd0304ee4e1553c8d21d98384cff..b7c6b8a326509d9a1be78cbf0f4e7eefabaf4ab6 100644 (file)
@@ -42,6 +42,8 @@ extern "C" {
  * The pthread_barrier_destroy() and pthread_barrierattr_destroy() functions have no distinction like the *_destroy() and the *_delete() used by the FLL project.
  * Therefore there is only this function for both deleting and destroying.
  *
+ * When F_barrier (with error bit) is returned, then pthread_barrierattr_destroy() is not called.
+ *
  * @param full
  *   The thread barrier_fulls to delete.
  *
@@ -50,10 +52,11 @@ extern "C" {
  * @return
  *   F_okay on success.
  *
- *   F_busy (with error bit) if a barrier is busy.
- *   F_parameter (with error bit) if a parameter is invalid.
+ *   F_busy (with error bit) if a barrier is busy when calling pthread_barrier_destroy().
+ *   F_parameter (with error bit) if a parameter is invalid (including parameter error when calling calling pthread_barrier_destroy().
  *
- *   F_failure (with error bit) on any other error.
+ *   F_attribute (with error bit) on error when calling pthread_barrierattr_destroy().
+ *   F_barrier (with error bit) on any error when calling pthread_barrier_destroy().
  *
  * @see pthread_barrier_destroy()
  * @see pthread_barrierattr_destroy()
index 9b0cd3b7cd0de37bba79912f4772cc913dea5ede..f9248ebb5ca3da08674bcca06e9613a04ccd78e6 100644 (file)
@@ -18,10 +18,10 @@ extern "C" {
         if (error == EBUSY) return F_status_set_error(F_busy);
         if (error == EINVAL) return F_status_set_error(F_parameter);
 
-        return F_status_set_error(F_failure);
+        return F_status_set_error(F_barrier);
       }
 
-      if (pthread_barrierattr_destroy(&array[i].attribute)) return F_status_set_error(F_failure);
+      if (pthread_barrierattr_destroy(&array[i].attribute)) return F_status_set_error(F_attribute);
     } // for
 
     return F_okay;
@@ -42,10 +42,10 @@ extern "C" {
         if (error == EBUSY) return F_status_set_error(F_busy);
         if (error == EINVAL) return F_status_set_error(F_parameter);
 
-        return F_status_set_error(F_failure);
+        return F_status_set_error(F_barrier);
       }
 
-      if (pthread_barrierattr_destroy(&array[i].attribute)) return F_status_set_error(F_failure);
+      if (pthread_barrierattr_destroy(&array[i].attribute)) return F_status_set_error(F_attribute);
     } // for
 
     return F_okay;
index 9c4c88803f803b4ab5aaabe0b0896b4982ec8b5c..a6cd8697cdb663ed05017dc63fb0ee5139b5d0b3 100644 (file)
@@ -45,6 +45,9 @@ extern "C" {
  *
  * This does not do parameter checking.
  *
+ * When F_barrier (with error bit) is returned, then pthread_barrierattr_destroy() is not called.
+ * On any error, the array is not guaranteed to be completely processed.
+ *
  * @param start
  *   The inclusive start position in the array to start deleting.
  * @param stop
@@ -57,13 +60,15 @@ extern "C" {
  * @return
  *   F_okay on success.
  *
- *   F_busy (with error bit) if a barrier is busy.
- *   F_parameter (with error bit) if a parameter is invalid.
+ *   F_busy (with error bit) if a barrier is busy when calling pthread_barrier_destroy().
+ *   F_parameter (with error bit) if a parameter is invalid (including parameter error when calling calling pthread_barrier_destroy().
+ *
+ *   F_attribute (with error bit) on error when calling pthread_barrierattr_destroy().
+ *   F_barrier (with error bit) on any error when calling pthread_barrier_destroy().
  *
  *   Errors (with error bit) from: f_memory_array_resize().
  *
  * @see f_memory_array_resize()
- * @see f_memory_arrays_resize()
  *
  * @see pthread_barrier_destroy()
  * @see pthread_barrierattr_destroy()
@@ -79,6 +84,9 @@ extern "C" {
  *
  * This does not do parameter checking.
  *
+ * When F_barrier (with error bit) is returned, then pthread_barrierattr_destroy() is not called.
+ * On any error, the array is not guaranteed to be completely processed.
+ *
  * @param start
  *   The inclusive start position in the array to start deleting.
  * @param stop
@@ -91,13 +99,15 @@ extern "C" {
  * @return
  *   F_okay on success.
  *
- *   F_busy (with error bit) if a barrier is busy.
- *   F_parameter (with error bit) if a parameter is invalid.
+ *   F_busy (with error bit) if a barrier is busy when calling pthread_barrier_destroy().
+ *   F_parameter (with error bit) if a parameter is invalid (including parameter error when calling calling pthread_barrier_destroy().
+ *
+ *   F_attribute (with error bit) on error when calling pthread_barrierattr_destroy().
+ *   F_barrier (with error bit) on any error when calling pthread_barrier_destroy().
  *
  *   Errors (with error bit) from: f_memory_array_adjust().
  *
  * @see f_memory_array_adjust()
- * @see f_memory_arrays_adjust()
  *
  * @see pthread_barrier_destroy()
  * @see pthread_barrierattr_destroy()
index 158238ddc53269f0d6b70794ba78bd51b6255055..eb2df0e802094b7b6bb6be1f017202b8c3eadba5 100644 (file)
@@ -21,10 +21,10 @@ extern "C" {
           if (error == EBUSY) return F_status_set_error(F_busy);
           if (error == EINVAL) return F_status_set_error(F_parameter);
 
-          return F_status_set_error(F_failure);
+          return F_status_set_error(F_barrier);
         }
 
-        if (pthread_barrierattr_destroy(&array[i].array[j].attribute)) return F_status_set_error(F_failure);
+        if (pthread_barrierattr_destroy(&array[i].array[j].attribute)) return F_status_set_error(F_attribute);
       } // for
 
       if (array[i].size && array[i].array) {
@@ -54,10 +54,10 @@ extern "C" {
           if (error == EBUSY) return F_status_set_error(F_busy);
           if (error == EINVAL) return F_status_set_error(F_parameter);
 
-          return F_status_set_error(F_failure);
+          return F_status_set_error(F_barrier);
         }
 
-        if (pthread_barrierattr_destroy(&array[i].array[j].attribute)) return F_status_set_error(F_failure);
+        if (pthread_barrierattr_destroy(&array[i].array[j].attribute)) return F_status_set_error(F_attribute);
       } // for
 
       if (array[i].size && array[i].array) {
index 552d9d33847efbb7c5720fe89e090a63215da898..a6e50faeb5742d8576a0bc2ff7680f5e48caa994 100644 (file)
@@ -45,6 +45,10 @@ extern "C" {
  *
  * This does not do parameter checking.
  *
+ * When F_barrier (with error bit) is returned, then pthread_barrierattr_destroy() is not called.
+ * When F_attribute or F_barrier (with error bits) is returned, then f_memory_array_resize() is not called.
+ * On any error, the array is not guaranteed to be completely processed.
+ *
  * @param start
  *   The inclusive start position in the array to start deleting.
  * @param stop
@@ -57,13 +61,15 @@ extern "C" {
  * @return
  *   F_okay on success.
  *
- *   F_busy (with error bit) if a barrier is busy.
- *   F_parameter (with error bit) if a parameter is invalid.
+ *   F_busy (with error bit) if a barrier is busy when calling pthread_barrier_destroy().
+ *   F_parameter (with error bit) if a parameter is invalid (including parameter error when calling calling pthread_barrier_destroy().
+ *
+ *   F_attribute (with error bit) on error when calling pthread_barrierattr_destroy().
+ *   F_barrier (with error bit) on any error when calling pthread_barrier_destroy().
  *
  *   Errors (with error bit) from: f_memory_array_resize().
  *
  * @see f_memory_array_resize()
- * @see f_memory_arrays_resize()
  *
  * @see pthread_barrier_destroy()
  * @see pthread_barrierattr_destroy()
@@ -79,6 +85,10 @@ extern "C" {
  *
  * This does not do parameter checking.
  *
+ * When F_barrier (with error bit) is returned, then pthread_barrierattr_destroy() is not called.
+ * When F_attribute or F_barrier (with error bits) is returned, then f_memory_array_resize() is not called.
+ * On any error, the array is not guaranteed to be completely processed.
+ *
  * @param start
  *   The inclusive start position in the array to start deleting.
  * @param stop
@@ -91,13 +101,15 @@ extern "C" {
  * @return
  *   F_okay on success.
  *
- *   F_busy (with error bit) if a barrier is busy.
- *   F_parameter (with error bit) if a parameter is invalid.
+ *   F_busy (with error bit) if a barrier is busy when calling pthread_barrier_destroy().
+ *   F_parameter (with error bit) if a parameter is invalid (including parameter error when calling calling pthread_barrier_destroy().
+ *
+ *   F_attribute (with error bit) on error when calling pthread_barrierattr_destroy().
+ *   F_barrier (with error bit) on any error when calling pthread_barrier_destroy().
  *
  *   Errors (with error bit) from: f_memory_array_adjust().
  *
  * @see f_memory_array_adjust()
- * @see f_memory_arrays_adjust()
  *
  * @see pthread_barrier_destroy()
  * @see pthread_barrierattr_destroy()
index 54433934aeb8761854d71788e1b37f4c1ef8e55f..801a66e5def99fb6c69d73ff1697121de4d1e8da 100644 (file)
@@ -17,11 +17,11 @@ extern "C" {
         if (error == EBUSY) return F_status_set_error(F_busy);
         if (error == EINVAL) return F_status_set_error(F_parameter);
 
-        return F_status_set_error(F_failure);
+        return F_status_set_error(F_condition);
       }
     }
 
-    return pthread_condattr_destroy(&full->attribute) ? F_status_set_error(F_failure) : F_okay;
+    return pthread_condattr_destroy(&full->attribute) ? F_status_set_error(F_attribute) : F_okay;
   }
 #endif // _di_f_thread_condition_full_delete_
 
index 1b305da6c620b056715729bf04f2350815c28135..8316720e37cfe1bff89e3339782abbccd9b06ca3 100644 (file)
@@ -40,6 +40,8 @@ extern "C" {
  * The pthread_condattr_destroy() and pthread_condattr_destroy() functions have no distinction like the *_destroy() and the *_delete() used by the FLL project.
  * Therefore there is only this function for both deleting and destroying.
  *
+ * When F_barrier (with error bit) is returned, then pthread_condattr_destroy() is not called.
+ *
  * @param full
  *   The full to delete.
  *
@@ -48,10 +50,11 @@ extern "C" {
  * @return
  *   F_okay on success.
  *
- *   F_busy (with error bit) if the full is busy.
- *   F_parameter (with error bit) if a parameter is invalid.
+ *   F_busy (with error bit) if a condition is busy when calling pthread_cond_destroy().
+ *   F_parameter (with error bit) if a parameter is invalid (including parameter error when calling calling pthread_cond_destroy().
  *
- *   F_failure (with error bit) on any other error.
+ *   F_attribute (with error bit) on error when calling pthread_condattr_destroy().
+ *   F_condition (with error bit) on any error when calling pthread_cond_destroy().
  *
  * @see pthread_cond_destroy()
  * @see pthread_condattr_destroy()
index e41b9b45d4b79dbe3dce55ffac95305a22908a8e..fbacb470030f5cd0c6c97aac9494cdd05125808f 100644 (file)
@@ -18,10 +18,10 @@ extern "C" {
         if (error == EBUSY) return F_status_set_error(F_busy);
         if (error == EINVAL) return F_status_set_error(F_parameter);
 
-        return F_status_set_error(F_failure);
+        return F_status_set_error(F_condition);
       }
 
-      if (pthread_condattr_destroy(&array[i].attribute)) return F_status_set_error(F_failure);
+      if (pthread_condattr_destroy(&array[i].attribute)) return F_status_set_error(F_attribute);
     } // for
 
     return F_okay;
@@ -42,10 +42,10 @@ extern "C" {
         if (error == EBUSY) return F_status_set_error(F_busy);
         if (error == EINVAL) return F_status_set_error(F_parameter);
 
-        return F_status_set_error(F_failure);
+        return F_status_set_error(F_condition);
       }
 
-      if (pthread_condattr_destroy(&array[i].attribute)) return F_status_set_error(F_failure);
+      if (pthread_condattr_destroy(&array[i].attribute)) return F_status_set_error(F_attribute);
     } // for
 
     return F_okay;
index 3616831ecc32f5d86d5a6a367df932a4699ede6d..e413eb31bc338e6cd1c93f1c3848ab740f3b6cb7 100644 (file)
@@ -45,6 +45,10 @@ extern "C" {
  *
  * This does not do parameter checking.
  *
+ * When F_condition (with error bit) is returned, then pthread_condattr_destroy() is not called.
+ * When F_attribute or F_condition (with error bits) is returned, then f_memory_array_resize() is not called.
+ * On any error, the array is not guaranteed to be completely processed.
+ *
  * @param start
  *   The inclusive start position in the array to start deleting.
  * @param stop
@@ -57,13 +61,15 @@ extern "C" {
  * @return
  *   F_okay on success.
  *
- *   F_busy (with error bit) if a condition is busy.
- *   F_parameter (with error bit) if a parameter is invalid.
+ *   F_busy (with error bit) if a condition is busy when calling pthread_cond_destroy().
+ *   F_parameter (with error bit) if a parameter is invalid (including parameter error when calling calling pthread_cond_destroy().
+ *
+ *   F_attribute (with error bit) on error when calling pthread_condattr_destroy().
+ *   F_condition (with error bit) on any error when calling pthread_cond_destroy().
  *
  *   Errors (with error bit) from: f_memory_array_resize().
  *
  * @see f_memory_array_resize()
- * @see f_memory_arrays_resize()
  *
  * @see pthread_cond_destroy()
  * @see pthread_condattr_destroy()
@@ -79,6 +85,10 @@ extern "C" {
  *
  * This does not do parameter checking.
  *
+ * When F_condition (with error bit) is returned, then pthread_condattr_destroy() is not called.
+ * When F_attribute or F_condition (with error bits) is returned, then f_memory_array_resize() is not called.
+ * On any error, the array is not guaranteed to be completely processed.
+ *
  * @param start
  *   The inclusive start position in the array to start deleting.
  * @param stop
@@ -91,13 +101,15 @@ extern "C" {
  * @return
  *   F_okay on success.
  *
- *   F_busy (with error bit) if a condition is busy.
- *   F_parameter (with error bit) if a parameter is invalid.
+ *   F_busy (with error bit) if a condition is busy when calling pthread_cond_destroy().
+ *   F_parameter (with error bit) if a parameter is invalid (including parameter error when calling calling pthread_cond_destroy().
+ *
+ *   F_attribute (with error bit) on error when calling pthread_condattr_destroy().
+ *   F_condition (with error bit) on any error when calling pthread_cond_destroy().
  *
  *   Errors (with error bit) from: f_memory_array_adjust().
  *
  * @see f_memory_array_adjust()
- * @see f_memory_arrays_adjust()
  *
  * @see pthread_cond_destroy()
  * @see pthread_condattr_destroy()
index 584eec6cf4eba5d064f3b3ea13ae2ebfd36b4dcf..51328079a93d26587d813a348f73d713afe70339 100644 (file)
@@ -21,10 +21,10 @@ extern "C" {
           if (error == EBUSY) return F_status_set_error(F_busy);
           if (error == EINVAL) return F_status_set_error(F_parameter);
 
-          return F_status_set_error(F_failure);
+          return F_status_set_error(F_condition);
         }
 
-        if (pthread_condattr_destroy(&array[i].array[j].attribute)) return F_status_set_error(F_failure);
+        if (pthread_condattr_destroy(&array[i].array[j].attribute)) return F_status_set_error(F_attribute);
       } // for
 
       if (array[i].size && array[i].array) {
@@ -54,10 +54,10 @@ extern "C" {
           if (error == EBUSY) return F_status_set_error(F_busy);
           if (error == EINVAL) return F_status_set_error(F_parameter);
 
-          return F_status_set_error(F_failure);
+          return F_status_set_error(F_condition);
         }
 
-        if (pthread_condattr_destroy(&array[i].array[j].attribute)) return F_status_set_error(F_failure);
+        if (pthread_condattr_destroy(&array[i].array[j].attribute)) return F_status_set_error(F_attribute);
       } // for
 
       if (array[i].size && array[i].array) {
index a8aea44ca855f3dbfa19b8706ea36f5ea3e5ec7b..dcc3f2834a5bd18f4cb71b4c63a975caa3451eed 100644 (file)
@@ -45,6 +45,10 @@ extern "C" {
  *
  * This does not do parameter checking.
  *
+ * When F_condition (with error bit) is returned, then pthread_condattr_destroy() is not called.
+ * When F_attribute or F_condition (with error bits) is returned, then f_memory_array_resize() is not called.
+ * On any error, the array is not guaranteed to be completely processed.
+ *
  * @param start
  *   The inclusive start position in the array to start deleting.
  * @param stop
@@ -57,13 +61,15 @@ extern "C" {
  * @return
  *   F_okay on success.
  *
- *   F_busy (with error bit) if a condition is busy.
- *   F_parameter (with error bit) if a parameter is invalid.
+ *   F_busy (with error bit) if a condition is busy when calling pthread_cond_destroy().
+ *   F_parameter (with error bit) if a parameter is invalid (including parameter error when calling calling pthread_cond_destroy().
+ *
+ *   F_attribute (with error bit) on error when calling pthread_condattr_destroy().
+ *   F_condition (with error bit) on any error when calling pthread_cond_destroy().
  *
  *   Errors (with error bit) from: f_memory_array_resize().
  *
  * @see f_memory_array_resize()
- * @see f_memory_arrays_resize()
  *
  * @see pthread_cond_destroy()
  * @see pthread_condattr_destroy()
@@ -79,6 +85,10 @@ extern "C" {
  *
  * This does not do parameter checking.
  *
+ * When F_condition (with error bit) is returned, then pthread_condattr_destroy() is not called.
+ * When F_attribute or F_condition (with error bits) is returned, then f_memory_array_resize() is not called.
+ * On any error, the array is not guaranteed to be completely processed.
+ *
  * @param start
  *   The inclusive start position in the array to start deleting.
  * @param stop
@@ -91,13 +101,15 @@ extern "C" {
  * @return
  *   F_okay on success.
  *
- *   F_busy (with error bit) if a condition is busy.
- *   F_parameter (with error bit) if a parameter is invalid.
+ *   F_busy (with error bit) if a condition is busy when calling pthread_cond_destroy().
+ *   F_parameter (with error bit) if a parameter is invalid (including parameter error when calling calling pthread_cond_destroy().
+ *
+ *   F_attribute (with error bit) on error when calling pthread_condattr_destroy().
+ *   F_condition (with error bit) on any error when calling pthread_cond_destroy().
  *
  *   Errors (with error bit) from: f_memory_array_adjust().
  *
  * @see f_memory_array_adjust()
- * @see f_memory_arrays_adjust()
  *
  * @see pthread_cond_destroy()
  * @see pthread_condattr_destroy()
index f8ba15e13d813c65ddac69327784ce42151b2123..6ff8fd653b15fae1a3035fad7bcae20e82e42edb 100644 (file)
@@ -17,11 +17,11 @@ extern "C" {
         if (error == EBUSY) return F_status_set_error(F_busy);
         if (error == EINVAL) return F_status_set_error(F_parameter);
 
-        return F_status_set_error(F_failure);
+        return F_status_set_error(F_read_write);
       }
     }
 
-    return pthread_rwlockattr_destroy(&full->attribute) ? F_status_set_error(F_failure) : F_okay;
+    return pthread_rwlockattr_destroy(&full->attribute) ? F_status_set_error(F_attribute) : F_okay;
   }
 #endif // _di_f_thread_lock_full_delete_
 
index e960c2a71f7b415f23de03d6d528f02aa3cc29c9..77fcb773a9635888a2e7f731a30e75c37d3bc59f 100644 (file)
@@ -40,6 +40,8 @@ extern "C" {
  * The pthread_rwlock_destroy() and pthread_rwlockattr_destroy() functions have no distinction like the *_destroy() and the *_delete() used by the FLL project.
  * Therefore there is only this function for both deleting and destroying.
  *
+ * When F_read_write (with error bit) is returned, then pthread_rwlockattr_destroy() is not called.
+ *
  * @param full
  *   The full to delete.
  *
@@ -50,8 +52,13 @@ extern "C" {
  *
  *   F_parameter (with error bit) if a parameter is invalid.
  *
- *   F_failure (with error bit) on any other error.
+ *   F_busy (with error bit) if a condition is busy when calling pthread_rwlock_destroy().
+ *   F_parameter (with error bit) if a parameter is invalid (including parameter error when calling calling pthread_rwlock_destroy().
+ *
+ *   F_attribute (with error bit) on error when calling pthread_rwlockattr_destroy().
+ *   F_read_write (with error bit) on any error when calling pthread_rwlock_destroy().
  *
+ * @see pthread_rwlock_destroy()
  * @see pthread_rwlockattr_destroy()
  */
 #ifndef _di_f_thread_lock_full_delete_
index f69097cc2633ea44bf0d6ca3acf568f10c12aa3b..92187d4222b4a57b84661074f9db268181804728 100644 (file)
@@ -19,10 +19,10 @@ extern "C" {
         if (error == EBUSY) return F_status_set_error(F_busy);
         if (error == EINVAL) return F_status_set_error(F_parameter);
 
-        return F_status_set_error(F_failure);
+        return F_status_set_error(F_read_write);
       }
 
-      if (pthread_rwlockattr_destroy(&array[i].attribute)) return F_status_set_error(F_failure);
+      if (pthread_rwlockattr_destroy(&array[i].attribute)) return F_status_set_error(F_attribute);
     } // for
 
     return F_okay;
@@ -43,10 +43,10 @@ extern "C" {
         if (error == EBUSY) return F_status_set_error(F_busy);
         if (error == EINVAL) return F_status_set_error(F_parameter);
 
-        return F_status_set_error(F_failure);
+        return F_status_set_error(F_read_write);
       }
 
-      if (pthread_rwlockattr_destroy(&array[i].attribute)) return F_status_set_error(F_failure);
+      if (pthread_rwlockattr_destroy(&array[i].attribute)) return F_status_set_error(F_attribute);
     } // for
 
     return F_okay;
index 37a9544aaf46a251e330747b7e2824651377400a..8d4c8136b5182054079d3f4421527a407984bed8 100644 (file)
@@ -45,6 +45,8 @@ extern "C" {
  *
  * This does not do parameter checking.
  *
+ * When F_read_write (with error bit) is returned, then pthread_rwlockattr_destroy() is not called.
+ *
  * @param start
  *   The inclusive start position in the array to start deleting.
  * @param stop
@@ -57,13 +59,15 @@ extern "C" {
  * @return
  *   F_okay on success.
  *
- *   F_busy (with error bit) if a lock is busy.
- *   F_parameter (with error bit) if a parameter is invalid.
+ *   F_busy (with error bit) if a condition is busy when calling pthread_rwlock_destroy().
+ *   F_parameter (with error bit) if a parameter is invalid (including parameter error when calling calling pthread_rwlock_destroy().
+ *
+ *   F_attribute (with error bit) on error when calling pthread_rwlockattr_destroy().
+ *   F_read_write (with error bit) on any error when calling pthread_rwlock_destroy().
  *
  *   Errors (with error bit) from: f_memory_array_resize().
  *
  * @see f_memory_array_resize()
- * @see f_memory_arrays_resize()
  *
  * @see pthread_rwlock_destroy()
  * @see pthread_rwlockattr_destroy()
@@ -79,6 +83,8 @@ extern "C" {
  *
  * This does not do parameter checking.
  *
+ * When F_read_write (with error bit) is returned, then pthread_rwlockattr_destroy() is not called.
+ *
  * @param start
  *   The inclusive start position in the array to start deleting.
  * @param stop
@@ -91,13 +97,15 @@ extern "C" {
  * @return
  *   F_okay on success.
  *
- *   F_busy (with error bit) if a lock is busy.
- *   F_parameter (with error bit) if a parameter is invalid.
+ *   F_busy (with error bit) if a condition is busy when calling pthread_rwlock_destroy().
+ *   F_parameter (with error bit) if a parameter is invalid (including parameter error when calling calling pthread_rwlock_destroy().
+ *
+ *   F_attribute (with error bit) on error when calling pthread_rwlockattr_destroy().
+ *   F_read_write (with error bit) on any error when calling pthread_rwlock_destroy().
  *
  *   Errors (with error bit) from: f_memory_array_adjust().
  *
  * @see f_memory_array_adjust()
- * @see f_memory_arrays_adjust()
  *
  * @see pthread_rwlock_destroy()
  * @see pthread_rwlockattr_destroy()
index e08085399244e75b63c9c1ff5b38af561131e674..7bbe47c0249e87e780b6fa3c3c0225438b5f5df3 100644 (file)
@@ -21,10 +21,10 @@ extern "C" {
           if (error == EBUSY) return F_status_set_error(F_busy);
           if (error == EINVAL) return F_status_set_error(F_parameter);
 
-          return F_status_set_error(F_failure);
+          return F_status_set_error(F_read_write);
         }
 
-        if (pthread_rwlockattr_destroy(&array[i].array[j].attribute)) return F_status_set_error(F_failure);
+        if (pthread_rwlockattr_destroy(&array[i].array[j].attribute)) return F_status_set_error(F_attribute);
       } // for
 
       if (array[i].size && array[i].array) {
@@ -54,10 +54,10 @@ extern "C" {
           if (error == EBUSY) return F_status_set_error(F_busy);
           if (error == EINVAL) return F_status_set_error(F_parameter);
 
-          return F_status_set_error(F_failure);
+          return F_status_set_error(F_read_write);
         }
 
-        if (pthread_rwlockattr_destroy(&array[i].array[j].attribute)) return F_status_set_error(F_failure);
+        if (pthread_rwlockattr_destroy(&array[i].array[j].attribute)) return F_status_set_error(F_attribute);
       } // for
 
       if (array[i].size && array[i].array) {
index cb5a17c4eab3d110f14f19616997db2d46f5bbba..295ecb4e86b9091883a2d06ba0b883703ee12028 100644 (file)
@@ -45,6 +45,8 @@ extern "C" {
  *
  * This does not do parameter checking.
  *
+ * When F_read_write (with error bit) is returned, then pthread_rwlockattr_destroy() is not called.
+ *
  * @param start
  *   The inclusive start position in the array to start deleting.
  * @param stop
@@ -57,13 +59,15 @@ extern "C" {
  * @return
  *   F_okay on success.
  *
- *   F_busy (with error bit) if a lock is busy.
- *   F_parameter (with error bit) if a parameter is invalid.
+ *   F_busy (with error bit) if a condition is busy when calling pthread_rwlock_destroy().
+ *   F_parameter (with error bit) if a parameter is invalid (including parameter error when calling calling pthread_rwlock_destroy().
+ *
+ *   F_attribute (with error bit) on error when calling pthread_rwlockattr_destroy().
+ *   F_read_write (with error bit) on any error when calling pthread_rwlock_destroy().
  *
  *   Errors (with error bit) from: f_memory_array_resize().
  *
  * @see f_memory_array_resize()
- * @see f_memory_arrays_resize()
  *
  * @see pthread_rwlock_destroy()
  * @see pthread_rwlockattr_destroy()
@@ -79,6 +83,8 @@ extern "C" {
  *
  * This does not do parameter checking.
  *
+ * When F_read_write (with error bit) is returned, then pthread_rwlockattr_destroy() is not called.
+ *
  * @param start
  *   The inclusive start position in the array to start deleting.
  * @param stop
@@ -91,13 +97,15 @@ extern "C" {
  * @return
  *   F_okay on success.
  *
- *   F_busy (with error bit) if a lock is busy.
- *   F_parameter (with error bit) if a parameter is invalid.
+ *   F_busy (with error bit) if a condition is busy when calling pthread_rwlock_destroy().
+ *   F_parameter (with error bit) if a parameter is invalid (including parameter error when calling calling pthread_rwlock_destroy().
+ *
+ *   F_attribute (with error bit) on error when calling pthread_rwlockattr_destroy().
+ *   F_read_write (with error bit) on any error when calling pthread_rwlock_destroy().
  *
  *   Errors (with error bit) from: f_memory_array_adjust().
  *
  * @see f_memory_array_adjust()
- * @see f_memory_arrays_adjust()
  *
  * @see pthread_rwlock_destroy()
  * @see pthread_rwlockattr_destroy()
index 431a575a89019871a366d0f5578b7baae817faf4..e9b5dc3ad800b0cc740138c9677b37afdbf118bc 100644 (file)
@@ -17,11 +17,11 @@ extern "C" {
         if (error == EBUSY) return F_status_set_error(F_busy);
         if (error == EINVAL) return F_status_set_error(F_parameter);
 
-        return F_status_set_error(F_failure);
+        return F_status_set_error(F_mutex);
       }
     }
 
-    return pthread_mutexattr_destroy(&full->attribute) ? F_status_set_error(F_failure) : F_okay;
+    return pthread_mutexattr_destroy(&full->attribute) ? F_status_set_error(F_attribute) : F_okay;
   }
 #endif // _di_f_thread_mutex_full_delete_
 
index 350741f2f7d0b824ecc8cbfd6fb8a71943e5174a..1ce6d960a810deabc29aac44a2fcd4d3b528f7dd 100644 (file)
@@ -40,6 +40,8 @@ extern "C" {
  * The pthread_mutex_destroy() and pthread_mutexattr_destroy() functions have no distinction like the *_destroy() and the *_delete() used by the FLL project.
  * Therefore there is only this function for both deleting and destroying.
  *
+ * When F_mutex (with error bit) is returned, then pthread_condattr_destroy() is not called.
+ *
  * @param full
  *   The full to delete.
  *
@@ -48,10 +50,11 @@ extern "C" {
  * @return
  *   F_okay on success.
  *
- *   F_busy (with error bit) if the mutex is busy.
- *   F_parameter (with error bit) if a parameter is invalid.
+ *   F_busy (with error bit) if a mutex is busy when calling pthread_mutex_destroy().
+ *   F_parameter (with error bit) if a parameter is invalid (including parameter error when calling calling pthread_mutex_destroy().
  *
- *   F_failure (with error bit) on any other error.
+ *   F_attribute (with error bit) on error when calling pthread_mutexattr_destroy().
+ *   F_mutex (with error bit) on any error when calling pthread_mutex_destroy().
  *
  * @see pthread_mutex_destroy()
  * @see pthread_mutexattr_destroy()
index 0e2e14d5be087c451475a509881a3b7529caa21d..286eafb9d0e0da9459f58d05ecffa71c8fcaab06 100644 (file)
@@ -18,10 +18,10 @@ extern "C" {
         if (error == EBUSY) return F_status_set_error(F_busy);
         if (error == EINVAL) return F_status_set_error(F_parameter);
 
-        return F_status_set_error(F_failure);
+        return F_status_set_error(F_mutex);
       }
 
-      if (pthread_mutexattr_destroy(&array[i].attribute)) return F_status_set_error(F_failure);
+      if (pthread_mutexattr_destroy(&array[i].attribute)) return F_status_set_error(F_attribute);
     } // for
 
     return F_okay;
@@ -42,10 +42,10 @@ extern "C" {
         if (error == EBUSY) return F_status_set_error(F_busy);
         if (error == EINVAL) return F_status_set_error(F_parameter);
 
-        return F_status_set_error(F_failure);
+        return F_status_set_error(F_mutex);
       }
 
-      if (pthread_mutexattr_destroy(&array[i].attribute)) return F_status_set_error(F_failure);
+      if (pthread_mutexattr_destroy(&array[i].attribute)) return F_status_set_error(F_attribute);
     } // for
 
     return F_okay;
index 6989a801a84307df23514994f99319131f9dcc5b..ae879b220440881f2abee0123bd57c2af27abc11 100644 (file)
@@ -45,6 +45,10 @@ extern "C" {
  *
  * This does not do parameter checking.
  *
+ * When F_mutex (with error bit) is returned, then pthread_mutexattr_destroy() is not called.
+ * When F_attribute or F_mutex (with error bits) is returned, then f_memory_array_resize() is not called.
+ * On any error, the array is not guaranteed to be completely processed.
+ *
  * @param start
  *   The inclusive start position in the array to start deleting.
  * @param stop
@@ -57,13 +61,15 @@ extern "C" {
  * @return
  *   F_okay on success.
  *
- *   F_busy (with error bit) if a mutex is busy.
- *   F_parameter (with error bit) if a parameter is invalid.
+ *   F_busy (with error bit) if a mutex is busy when calling pthread_mutex_destroy().
+ *   F_parameter (with error bit) if a parameter is invalid (including parameter error when calling calling pthread_mutex_destroy().
+ *
+ *   F_attribute (with error bit) on error when calling pthread_mutexattr_destroy().
+ *   F_mutex (with error bit) on any error when calling pthread_mutex_destroy().
  *
  *   Errors (with error bit) from: f_memory_array_resize().
  *
  * @see f_memory_array_resize()
- * @see f_memory_arrays_resize()
  *
  * @see pthread_mutex_destroy()
  * @see pthread_mutexattr_destroy()
@@ -79,6 +85,10 @@ extern "C" {
  *
  * This does not do parameter checking.
  *
+ * When F_mutex (with error bit) is returned, then pthread_mutexattr_destroy() is not called.
+ * When F_attribute or F_mutex (with error bits) is returned, then f_memory_array_resize() is not called.
+ * On any error, the array is not guaranteed to be completely processed.
+ *
  * @param start
  *   The inclusive start position in the array to start deleting.
  * @param stop
@@ -91,13 +101,15 @@ extern "C" {
  * @return
  *   F_okay on success.
  *
- *   F_busy (with error bit) if a mutex is busy.
- *   F_parameter (with error bit) if a parameter is invalid.
+ *   F_busy (with error bit) if a mutex is busy when calling pthread_mutex_destroy().
+ *   F_parameter (with error bit) if a parameter is invalid (including parameter error when calling calling pthread_mutex_destroy().
+ *
+ *   F_attribute (with error bit) on error when calling pthread_mutexattr_destroy().
+ *   F_mutex (with error bit) on any error when calling pthread_mutex_destroy().
  *
  *   Errors (with error bit) from: f_memory_array_adjust().
  *
  * @see f_memory_array_adjust()
- * @see f_memory_arrays_adjust()
  *
  * @see pthread_mutex_destroy()
  * @see pthread_mutexattr_destroy()
index 0d766be0324d4e01fd48f806fd86762acc6ffccb..e89740ea201107b13682da140060bf02ef7563b6 100644 (file)
@@ -21,10 +21,10 @@ extern "C" {
           if (error == EBUSY) return F_status_set_error(F_busy);
           if (error == EINVAL) return F_status_set_error(F_parameter);
 
-          return F_status_set_error(F_failure);
+          return F_status_set_error(F_mutex);
         }
 
-        if (pthread_mutexattr_destroy(&array[i].array[j].attribute)) return F_status_set_error(F_failure);
+        if (pthread_mutexattr_destroy(&array[i].array[j].attribute)) return F_status_set_error(F_attribute);
       } // for
 
       if (array[i].size && array[i].array) {
@@ -54,10 +54,10 @@ extern "C" {
           if (error == EBUSY) return F_status_set_error(F_busy);
           if (error == EINVAL) return F_status_set_error(F_parameter);
 
-          return F_status_set_error(F_failure);
+          return F_status_set_error(F_mutex);
         }
 
-        if (pthread_mutexattr_destroy(&array[i].array[j].attribute)) return F_status_set_error(F_failure);
+        if (pthread_mutexattr_destroy(&array[i].array[j].attribute)) return F_status_set_error(F_attribute);
       } // for
 
       if (array[i].size && array[i].array) {
index 1abf8638a43634b42466117f404c43ee8d604008..7ac9b4251cc08535788471c4dffe1306354f8bfd 100644 (file)
@@ -45,6 +45,10 @@ extern "C" {
  *
  * This does not do parameter checking.
  *
+ * When F_mutex (with error bit) is returned, then pthread_mutexattr_destroy() is not called.
+ * When F_attribute or F_mutex (with error bits) is returned, then f_memory_array_resize() is not called.
+ * On any error, the array is not guaranteed to be completely processed.
+ *
  * @param start
  *   The inclusive start position in the array to start deleting.
  * @param stop
@@ -57,13 +61,15 @@ extern "C" {
  * @return
  *   F_okay on success.
  *
- *   F_busy (with error bit) if a mutex is busy.
- *   F_parameter (with error bit) if a parameter is invalid.
+ *   F_busy (with error bit) if a mutex is busy when calling pthread_mutex_destroy().
+ *   F_parameter (with error bit) if a parameter is invalid (including parameter error when calling calling pthread_mutex_destroy().
+ *
+ *   F_attribute (with error bit) on error when calling pthread_mutexattr_destroy().
+ *   F_mutex (with error bit) on any error when calling pthread_mutex_destroy().
  *
  *   Errors (with error bit) from: f_memory_array_resize().
  *
  * @see f_memory_array_resize()
- * @see f_memory_arrays_resize()
  *
  * @see pthread_mutex_destroy()
  * @see pthread_mutexattr_destroy()
@@ -79,6 +85,10 @@ extern "C" {
  *
  * This does not do parameter checking.
  *
+ * When F_mutex (with error bit) is returned, then pthread_mutexattr_destroy() is not called.
+ * When F_attribute or F_mutex (with error bits) is returned, then f_memory_array_resize() is not called.
+ * On any error, the array is not guaranteed to be completely processed.
+ *
  * @param start
  *   The inclusive start position in the array to start deleting.
  * @param stop
@@ -91,13 +101,15 @@ extern "C" {
  * @return
  *   F_okay on success.
  *
- *   F_busy (with error bit) if a mutex is busy.
- *   F_parameter (with error bit) if a parameter is invalid.
+ *   F_busy (with error bit) if a mutex is busy when calling pthread_mutex_destroy().
+ *   F_parameter (with error bit) if a parameter is invalid (including parameter error when calling calling pthread_mutex_destroy().
+ *
+ *   F_attribute (with error bit) on error when calling pthread_mutexattr_destroy().
+ *   F_mutex (with error bit) on any error when calling pthread_mutex_destroy().
  *
  *   Errors (with error bit) from: f_memory_array_adjust().
  *
  * @see f_memory_array_adjust()
- * @see f_memory_arrays_adjust()
  *
  * @see pthread_mutex_destroy()
  * @see pthread_mutexattr_destroy()
index f2d73f5717cce25bdf96445caf7f510a2a553ed7..ac75c3494d209154a6436fb15aa3036f87f9ee33 100644 (file)
@@ -15,10 +15,16 @@ void test__f_thread_barrier_full_delete__fails(void **state) {
     mock_errno_generic,
   };
 
-  f_status_t statuss[] = {
+  f_status_t statuss_1[] = {
     F_busy,
     F_parameter,
-    F_failure,
+    F_barrier,
+  };
+
+  f_status_t statuss_2[] = {
+    F_busy,
+    F_parameter,
+    F_attribute,
   };
 
   for (uint8_t i = 0; i < 3; ++i) {
@@ -28,7 +34,7 @@ void test__f_thread_barrier_full_delete__fails(void **state) {
 
     const f_status_t status = f_thread_barrier_full_delete(&full);
 
-    assert_int_equal(status, F_status_set_error(statuss[i]));
+    assert_int_equal(status, F_status_set_error(statuss_1[i]));
   } // for
 
   {
@@ -40,7 +46,7 @@ void test__f_thread_barrier_full_delete__fails(void **state) {
 
     const f_status_t status = f_thread_barrier_full_delete(&full);
 
-    assert_int_equal(status, F_status_set_error(statuss[i]));
+    assert_int_equal(status, F_status_set_error(statuss_2[i]));
   } // for
 }
 
index 61a972f4b9083e1eb75996f450194d8b5079eb2e..7111371529634c355561ac5c57cd53b2bce2ece3 100644 (file)
@@ -18,10 +18,16 @@ void test__f_thread_barrier_fulls_delete_callback__fails(void **state) {
     mock_errno_generic,
   };
 
-  f_status_t statuss[] = {
+  f_status_t statuss_1[] = {
     F_busy,
     F_parameter,
-    F_failure,
+    F_barrier,
+  };
+
+  f_status_t statuss_2[] = {
+    F_busy,
+    F_parameter,
+    F_attribute,
   };
 
   for (uint8_t i = 0; i < 3; ++i) {
@@ -31,7 +37,7 @@ void test__f_thread_barrier_fulls_delete_callback__fails(void **state) {
 
     const f_status_t status = f_thread_barrier_fulls_delete_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, F_status_set_error(statuss[i]));
+    assert_int_equal(status, F_status_set_error(statuss_1[i]));
   } // for
 
   {
@@ -43,7 +49,7 @@ void test__f_thread_barrier_fulls_delete_callback__fails(void **state) {
 
     const f_status_t status = f_thread_barrier_fulls_delete_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, F_status_set_error(statuss[i]));
+    assert_int_equal(status, F_status_set_error(statuss_2[i]));
   } // for
 }
 
index 02ce59d36516e8afe41ce16934ed98f28ddabfc7..8c88b67a22cb348e01943f7b1abd8447f0fe31c2 100644 (file)
@@ -18,10 +18,16 @@ void test__f_thread_barrier_fulls_destroy_callback__fails(void **state) {
     mock_errno_generic,
   };
 
-  f_status_t statuss[] = {
+  f_status_t statuss_1[] = {
     F_busy,
     F_parameter,
-    F_failure,
+    F_barrier,
+  };
+
+  f_status_t statuss_2[] = {
+    F_busy,
+    F_parameter,
+    F_attribute,
   };
 
   for (uint8_t i = 0; i < 3; ++i) {
@@ -31,7 +37,7 @@ void test__f_thread_barrier_fulls_destroy_callback__fails(void **state) {
 
     const f_status_t status = f_thread_barrier_fulls_destroy_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, F_status_set_error(statuss[i]));
+    assert_int_equal(status, F_status_set_error(statuss_1[i]));
   } // for
 
   {
@@ -43,7 +49,7 @@ void test__f_thread_barrier_fulls_destroy_callback__fails(void **state) {
 
     const f_status_t status = f_thread_barrier_fulls_destroy_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, F_status_set_error(statuss[i]));
+    assert_int_equal(status, F_status_set_error(statuss_2[i]));
   } // for
 }
 
index a1098a994a2ccf62ad5059c722eda2b469c9f880..b346bbf1976dbc63475a8b2c190d566cad0a7a62 100644 (file)
@@ -20,10 +20,16 @@ void test__f_thread_barrier_fullss_delete_callback__fails(void **state) {
     mock_errno_generic,
   };
 
-  f_status_t statuss[] = {
+  f_status_t statuss_1[] = {
     F_busy,
     F_parameter,
-    F_failure,
+    F_barrier,
+  };
+
+  f_status_t statuss_2[] = {
+    F_busy,
+    F_parameter,
+    F_attribute,
   };
 
   for (uint8_t i = 0; i < 3; ++i) {
@@ -33,7 +39,7 @@ void test__f_thread_barrier_fullss_delete_callback__fails(void **state) {
 
     const f_status_t status = f_thread_barrier_fullss_delete_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, F_status_set_error(statuss[i]));
+    assert_int_equal(status, F_status_set_error(statuss_1[i]));
   } // for
 
   {
@@ -45,7 +51,7 @@ void test__f_thread_barrier_fullss_delete_callback__fails(void **state) {
 
     const f_status_t status = f_thread_barrier_fullss_delete_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, F_status_set_error(statuss[i]));
+    assert_int_equal(status, F_status_set_error(statuss_2[i]));
   } // for
 }
 
index 67c34696d5d5f065c06c0cd726d397f6c3367b01..b0b24ca5621f5c275e1b8ca2d1d04f6807353b1d 100644 (file)
@@ -20,10 +20,16 @@ void test__f_thread_barrier_fullss_destroy_callback__fails(void **state) {
     mock_errno_generic,
   };
 
-  f_status_t statuss[] = {
+  f_status_t statuss_1[] = {
     F_busy,
     F_parameter,
-    F_failure,
+    F_barrier,
+  };
+
+  f_status_t statuss_2[] = {
+    F_busy,
+    F_parameter,
+    F_attribute,
   };
 
   for (uint8_t i = 0; i < 3; ++i) {
@@ -33,7 +39,7 @@ void test__f_thread_barrier_fullss_destroy_callback__fails(void **state) {
 
     const f_status_t status = f_thread_barrier_fullss_destroy_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, F_status_set_error(statuss[i]));
+    assert_int_equal(status, F_status_set_error(statuss_1[i]));
   } // for
 
   {
@@ -45,7 +51,7 @@ void test__f_thread_barrier_fullss_destroy_callback__fails(void **state) {
 
     const f_status_t status = f_thread_barrier_fullss_destroy_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, F_status_set_error(statuss[i]));
+    assert_int_equal(status, F_status_set_error(statuss_2[i]));
   } // for
 }
 
index 7e40b37a0aeebb91da7716f4a7f9ea4ab54c577e..d102f785ad4e2d8bb72fb3bb9eae33a243a31e1f 100644 (file)
@@ -15,10 +15,16 @@ void test__f_thread_condition_full_delete__fails(void **state) {
     mock_errno_generic,
   };
 
-  f_status_t statuss[] = {
+  f_status_t statuss_1[] = {
     F_busy,
     F_parameter,
-    F_failure,
+    F_condition,
+  };
+
+  f_status_t statuss_2[] = {
+    F_busy,
+    F_parameter,
+    F_attribute,
   };
 
   for (uint8_t i = 0; i < 3; ++i) {
@@ -28,7 +34,7 @@ void test__f_thread_condition_full_delete__fails(void **state) {
 
     const f_status_t status = f_thread_condition_full_delete(&full);
 
-    assert_int_equal(status, F_status_set_error(statuss[i]));
+    assert_int_equal(status, F_status_set_error(statuss_1[i]));
   } // for
 
   {
@@ -40,7 +46,7 @@ void test__f_thread_condition_full_delete__fails(void **state) {
 
     const f_status_t status = f_thread_condition_full_delete(&full);
 
-    assert_int_equal(status, F_status_set_error(statuss[i]));
+    assert_int_equal(status, F_status_set_error(statuss_2[i]));
   } // for
 }
 
index 7597a45df97eef8a178c039fb064c31aaaf505e5..0c02b9e792692dfda0aae56a639b43a7e1c97bee 100644 (file)
@@ -18,10 +18,16 @@ void test__f_thread_condition_fulls_delete_callback__fails(void **state) {
     mock_errno_generic,
   };
 
-  f_status_t statuss[] = {
-    F_status_set_error(F_busy),
-    F_status_set_error(F_parameter),
-    F_status_set_error(F_failure),
+  f_status_t statuss_1[] = {
+    F_busy,
+    F_parameter,
+    F_condition,
+  };
+
+  f_status_t statuss_2[] = {
+    F_busy,
+    F_parameter,
+    F_attribute,
   };
 
   for (uint8_t i = 0; i < 3; ++i) {
@@ -31,7 +37,7 @@ void test__f_thread_condition_fulls_delete_callback__fails(void **state) {
 
     const f_status_t status = f_thread_condition_fulls_delete_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, statuss[i]);
+    assert_int_equal(status, F_status_set_error(statuss_1[i]));
   } // for
 
   {
@@ -43,7 +49,7 @@ void test__f_thread_condition_fulls_delete_callback__fails(void **state) {
 
     const f_status_t status = f_thread_condition_fulls_delete_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, statuss[i]);
+    assert_int_equal(status, F_status_set_error(statuss_2[i]));
   } // for
 }
 
index bf7d09205d231c37fb13ab579372c68568fed0d3..54d7c35e715dcdbf726a13bbace29b19cc9ebc4f 100644 (file)
@@ -18,10 +18,16 @@ void test__f_thread_condition_fulls_destroy_callback__fails(void **state) {
     mock_errno_generic,
   };
 
-  f_status_t statuss[] = {
-    F_status_set_error(F_busy),
-    F_status_set_error(F_parameter),
-    F_status_set_error(F_failure),
+  f_status_t statuss_1[] = {
+    F_busy,
+    F_parameter,
+    F_condition,
+  };
+
+  f_status_t statuss_2[] = {
+    F_busy,
+    F_parameter,
+    F_attribute,
   };
 
   for (uint8_t i = 0; i < 3; ++i) {
@@ -31,7 +37,7 @@ void test__f_thread_condition_fulls_destroy_callback__fails(void **state) {
 
     const f_status_t status = f_thread_condition_fulls_destroy_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, statuss[i]);
+    assert_int_equal(status, F_status_set_error(statuss_1[i]));
   } // for
 
   {
@@ -43,7 +49,7 @@ void test__f_thread_condition_fulls_destroy_callback__fails(void **state) {
 
     const f_status_t status = f_thread_condition_fulls_destroy_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, statuss[i]);
+    assert_int_equal(status, F_status_set_error(statuss_2[i]));
   } // for
 }
 
index 3cf49efeec52b7e759e3c2fed7eff8f938b20325..731a231a9573f09a68d61e896125ac37e2183f4f 100644 (file)
@@ -20,10 +20,16 @@ void test__f_thread_condition_fullss_delete_callback__fails(void **state) {
     mock_errno_generic,
   };
 
-  f_status_t statuss[] = {
-    F_status_set_error(F_busy),
-    F_status_set_error(F_parameter),
-    F_status_set_error(F_failure),
+  f_status_t statuss_1[] = {
+    F_busy,
+    F_parameter,
+    F_condition,
+  };
+
+  f_status_t statuss_2[] = {
+    F_busy,
+    F_parameter,
+    F_attribute,
   };
 
   for (uint8_t i = 0; i < 3; ++i) {
@@ -33,7 +39,7 @@ void test__f_thread_condition_fullss_delete_callback__fails(void **state) {
 
     const f_status_t status = f_thread_condition_fullss_delete_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, statuss[i]);
+    assert_int_equal(status, F_status_set_error(statuss_1[i]));
   } // for
 
   {
@@ -45,7 +51,7 @@ void test__f_thread_condition_fullss_delete_callback__fails(void **state) {
 
     const f_status_t status = f_thread_condition_fullss_delete_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, statuss[i]);
+    assert_int_equal(status, F_status_set_error(statuss_2[i]));
   } // for
 }
 
index 9177559dfee1cc21befbe4a705436b3736300c8d..cce03efe88460f0abb313cf55fe66a3e5bb9f794 100644 (file)
@@ -20,10 +20,16 @@ void test__f_thread_condition_fullss_destroy_callback__fails(void **state) {
     mock_errno_generic,
   };
 
-  f_status_t statuss[] = {
-    F_status_set_error(F_busy),
-    F_status_set_error(F_parameter),
-    F_status_set_error(F_failure),
+  f_status_t statuss_1[] = {
+    F_busy,
+    F_parameter,
+    F_condition,
+  };
+
+  f_status_t statuss_2[] = {
+    F_busy,
+    F_parameter,
+    F_attribute,
   };
 
   for (uint8_t i = 0; i < 3; ++i) {
@@ -33,7 +39,7 @@ void test__f_thread_condition_fullss_destroy_callback__fails(void **state) {
 
     const f_status_t status = f_thread_condition_fullss_destroy_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, statuss[i]);
+    assert_int_equal(status, F_status_set_error(statuss_1[i]));
   } // for
 
   {
@@ -45,7 +51,7 @@ void test__f_thread_condition_fullss_destroy_callback__fails(void **state) {
 
     const f_status_t status = f_thread_condition_fullss_destroy_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, statuss[i]);
+    assert_int_equal(status, F_status_set_error(statuss_2[i]));
   } // for
 }
 
index 6fd6a762d6fd3d5e8524a812678c4961646d5ade..18117f7d596d7a96c93b0394162d70c5276a4d74 100644 (file)
@@ -15,10 +15,16 @@ void test__f_thread_lock_full_delete__fails(void **state) {
     mock_errno_generic,
   };
 
-  f_status_t statuss[] = {
+  f_status_t statuss_1[] = {
     F_busy,
     F_parameter,
-    F_failure,
+    F_read_write,
+  };
+
+  f_status_t statuss_2[] = {
+    F_busy,
+    F_parameter,
+    F_attribute,
   };
 
   for (uint8_t i = 0; i < 3; ++i) {
@@ -28,7 +34,7 @@ void test__f_thread_lock_full_delete__fails(void **state) {
 
     const f_status_t status = f_thread_lock_full_delete(&full);
 
-    assert_int_equal(status, F_status_set_error(statuss[i]));
+    assert_int_equal(status, F_status_set_error(statuss_1[i]));
   } // for
 
   {
@@ -40,7 +46,7 @@ void test__f_thread_lock_full_delete__fails(void **state) {
 
     const f_status_t status = f_thread_lock_full_delete(&full);
 
-    assert_int_equal(status, F_status_set_error(statuss[i]));
+    assert_int_equal(status, F_status_set_error(statuss_2[i]));
   } // for
 }
 
index 884b601452c328d827437a4cb0ff4bb9c27d3a3f..71f934ca54cde2fae948b772fda62a54bd498ef9 100644 (file)
@@ -18,10 +18,16 @@ void test__f_thread_lock_fulls_delete_callback__fails(void **state) {
     mock_errno_generic,
   };
 
-  f_status_t statuss[] = {
-    F_status_set_error(F_busy),
-    F_status_set_error(F_parameter),
-    F_status_set_error(F_failure),
+  f_status_t statuss_1[] = {
+    F_busy,
+    F_parameter,
+    F_read_write,
+  };
+
+  f_status_t statuss_2[] = {
+    F_busy,
+    F_parameter,
+    F_attribute,
   };
 
   for (uint8_t i = 0; i < 3; ++i) {
@@ -31,7 +37,7 @@ void test__f_thread_lock_fulls_delete_callback__fails(void **state) {
 
     const f_status_t status = f_thread_lock_fulls_delete_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, statuss[i]);
+    assert_int_equal(status, F_status_set_error(statuss_1[i]));
   } // for
 
   {
@@ -43,7 +49,7 @@ void test__f_thread_lock_fulls_delete_callback__fails(void **state) {
 
     const f_status_t status = f_thread_lock_fulls_delete_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, statuss[i]);
+    assert_int_equal(status, F_status_set_error(statuss_2[i]));
   }
 }
 
index 4ce2837fbb0d3b132a3478f9a5d7220d9b822bfa..d35bc5329df44a2f113507fcfea1dd236a4d8acc 100644 (file)
@@ -18,10 +18,16 @@ void test__f_thread_lock_fulls_destroy_callback__fails(void **state) {
     mock_errno_generic,
   };
 
-  f_status_t statuss[] = {
-    F_status_set_error(F_busy),
-    F_status_set_error(F_parameter),
-    F_status_set_error(F_failure),
+  f_status_t statuss_1[] = {
+    F_busy,
+    F_parameter,
+    F_read_write,
+  };
+
+  f_status_t statuss_2[] = {
+    F_busy,
+    F_parameter,
+    F_attribute,
   };
 
   for (uint8_t i = 0; i < 3; ++i) {
@@ -31,7 +37,7 @@ void test__f_thread_lock_fulls_destroy_callback__fails(void **state) {
 
     const f_status_t status = f_thread_lock_fulls_destroy_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, statuss[i]);
+    assert_int_equal(status, F_status_set_error(statuss_1[i]));
   } // for
 
   {
@@ -43,7 +49,7 @@ void test__f_thread_lock_fulls_destroy_callback__fails(void **state) {
 
     const f_status_t status = f_thread_lock_fulls_destroy_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, statuss[i]);
+    assert_int_equal(status, F_status_set_error(statuss_2[i]));
   }
 }
 
index 64f57b6f5f4b96f90fa6d51b978bfa36361bf8b0..d7670e1956be4161e9f11a37c2da5a3ee402e20b 100644 (file)
@@ -20,10 +20,16 @@ void test__f_thread_lock_fullss_delete_callback__fails(void **state) {
     mock_errno_generic,
   };
 
-  f_status_t statuss[] = {
-    F_status_set_error(F_busy),
-    F_status_set_error(F_parameter),
-    F_status_set_error(F_failure),
+  f_status_t statuss_1[] = {
+    F_busy,
+    F_parameter,
+    F_read_write,
+  };
+
+  f_status_t statuss_2[] = {
+    F_busy,
+    F_parameter,
+    F_attribute,
   };
 
   for (uint8_t i = 0; i < 3; ++i) {
@@ -33,7 +39,7 @@ void test__f_thread_lock_fullss_delete_callback__fails(void **state) {
 
     const f_status_t status = f_thread_lock_fullss_delete_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, statuss[i]);
+    assert_int_equal(status, F_status_set_error(statuss_1[i]));
   } // for
 
   {
@@ -45,7 +51,7 @@ void test__f_thread_lock_fullss_delete_callback__fails(void **state) {
 
     const f_status_t status = f_thread_lock_fullss_delete_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, statuss[i]);
+    assert_int_equal(status, F_status_set_error(statuss_2[i]));
   }
 }
 
index 32cf0771a966e653196de4a4152b838e8c35ccb6..47030d897b9355f815d90241c10fbef801edb51c 100644 (file)
@@ -20,10 +20,16 @@ void test__f_thread_lock_fullss_destroy_callback__fails(void **state) {
     mock_errno_generic,
   };
 
-  f_status_t statuss[] = {
-    F_status_set_error(F_busy),
-    F_status_set_error(F_parameter),
-    F_status_set_error(F_failure),
+  f_status_t statuss_1[] = {
+    F_busy,
+    F_parameter,
+    F_read_write,
+  };
+
+  f_status_t statuss_2[] = {
+    F_busy,
+    F_parameter,
+    F_attribute,
   };
 
   for (uint8_t i = 0; i < 3; ++i) {
@@ -33,7 +39,7 @@ void test__f_thread_lock_fullss_destroy_callback__fails(void **state) {
 
     const f_status_t status = f_thread_lock_fullss_destroy_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, statuss[i]);
+    assert_int_equal(status, F_status_set_error(statuss_1[i]));
   } // for
 
   {
@@ -45,7 +51,7 @@ void test__f_thread_lock_fullss_destroy_callback__fails(void **state) {
 
     const f_status_t status = f_thread_lock_fullss_destroy_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, statuss[i]);
+    assert_int_equal(status, F_status_set_error(statuss_2[i]));
   }
 }
 
index 411c9b1aa8d0a7417ce85c7692454049bb74ce87..7fa3802b7af2866b4aba5e406e1ffa2513d108c9 100644 (file)
@@ -15,10 +15,16 @@ void test__f_thread_mutex_full_delete__fails(void **state) {
     mock_errno_generic,
   };
 
-  f_status_t statuss[] = {
+  f_status_t statuss_1[] = {
     F_busy,
     F_parameter,
-    F_failure,
+    F_mutex,
+  };
+
+  f_status_t statuss_2[] = {
+    F_busy,
+    F_parameter,
+    F_attribute,
   };
 
   for (uint8_t i = 0; i < 3; ++i) {
@@ -28,7 +34,7 @@ void test__f_thread_mutex_full_delete__fails(void **state) {
 
     const f_status_t status = f_thread_mutex_full_delete(&full);
 
-    assert_int_equal(status, F_status_set_error(statuss[i]));
+    assert_int_equal(status, F_status_set_error(statuss_1[i]));
   } // for
 
   {
@@ -40,7 +46,7 @@ void test__f_thread_mutex_full_delete__fails(void **state) {
 
     const f_status_t status = f_thread_mutex_full_delete(&full);
 
-    assert_int_equal(status, F_status_set_error(statuss[i]));
+    assert_int_equal(status, F_status_set_error(statuss_2[i]));
   }
 }
 
index b657c66608f9aa67491b3c2f2f7e8f3a16f55852..15db48062de4f4e8eae45e7e81ffe540723564d6 100644 (file)
@@ -18,10 +18,16 @@ void test__f_thread_mutex_fulls_delete_callback__fails(void **state) {
     mock_errno_generic,
   };
 
-  f_status_t statuss[] = {
-    F_status_set_error(F_busy),
-    F_status_set_error(F_parameter),
-    F_status_set_error(F_failure),
+  f_status_t statuss_1[] = {
+    F_busy,
+    F_parameter,
+    F_mutex,
+  };
+
+  f_status_t statuss_2[] = {
+    F_busy,
+    F_parameter,
+    F_attribute,
   };
 
   for (uint8_t i = 0; i < 3; ++i) {
@@ -31,7 +37,7 @@ void test__f_thread_mutex_fulls_delete_callback__fails(void **state) {
 
     const f_status_t status = f_thread_mutex_fulls_delete_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, statuss[i]);
+    assert_int_equal(status, F_status_set_error(statuss_1[i]));
   } // for
 
   {
@@ -43,7 +49,7 @@ void test__f_thread_mutex_fulls_delete_callback__fails(void **state) {
 
     const f_status_t status = f_thread_mutex_fulls_delete_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, statuss[i]);
+    assert_int_equal(status, F_status_set_error(statuss_2[i]));
   }
 }
 
index 68e677f1362eb54b1324231427ef8aa3fe549d1c..bdbc82d6bf5abfcc56d521ef839f666e368a1914 100644 (file)
@@ -18,10 +18,16 @@ void test__f_thread_mutex_fulls_destroy_callback__fails(void **state) {
     mock_errno_generic,
   };
 
-  f_status_t statuss[] = {
-    F_status_set_error(F_busy),
-    F_status_set_error(F_parameter),
-    F_status_set_error(F_failure),
+  f_status_t statuss_1[] = {
+    F_busy,
+    F_parameter,
+    F_mutex,
+  };
+
+  f_status_t statuss_2[] = {
+    F_busy,
+    F_parameter,
+    F_attribute,
   };
 
   for (uint8_t i = 0; i < 3; ++i) {
@@ -31,7 +37,7 @@ void test__f_thread_mutex_fulls_destroy_callback__fails(void **state) {
 
     const f_status_t status = f_thread_mutex_fulls_destroy_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, statuss[i]);
+    assert_int_equal(status, F_status_set_error(statuss_1[i]));
   } // for
 
   {
@@ -43,7 +49,7 @@ void test__f_thread_mutex_fulls_destroy_callback__fails(void **state) {
 
     const f_status_t status = f_thread_mutex_fulls_destroy_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, statuss[i]);
+    assert_int_equal(status, F_status_set_error(statuss_2[i]));
   }
 }
 
index d52b04ca6098c6d08bac6d4150a5b265ff166af2..10ca0e5c81e6e72d41f7b15cb0ffc346dcd00def 100644 (file)
@@ -20,10 +20,16 @@ void test__f_thread_mutex_fullss_delete_callback__fails(void **state) {
     mock_errno_generic,
   };
 
-  f_status_t statuss[] = {
-    F_status_set_error(F_busy),
-    F_status_set_error(F_parameter),
-    F_status_set_error(F_failure),
+  f_status_t statuss_1[] = {
+    F_busy,
+    F_parameter,
+    F_mutex,
+  };
+
+  f_status_t statuss_2[] = {
+    F_busy,
+    F_parameter,
+    F_attribute,
   };
 
   for (uint8_t i = 0; i < 3; ++i) {
@@ -33,7 +39,7 @@ void test__f_thread_mutex_fullss_delete_callback__fails(void **state) {
 
     const f_status_t status = f_thread_mutex_fullss_delete_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, statuss[i]);
+    assert_int_equal(status, F_status_set_error(statuss_1[i]));
   } // for
 
   {
@@ -45,7 +51,7 @@ void test__f_thread_mutex_fullss_delete_callback__fails(void **state) {
 
     const f_status_t status = f_thread_mutex_fullss_delete_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, statuss[i]);
+    assert_int_equal(status, F_status_set_error(statuss_2[i]));
   }
 }
 
index 3c4f1b7cfa055873f6e3b6608adafc059df5d63d..17b92500b798b519500a4dd0dcf34536e6936eaa 100644 (file)
@@ -20,10 +20,16 @@ void test__f_thread_mutex_fullss_destroy_callback__fails(void **state) {
     mock_errno_generic,
   };
 
-  f_status_t statuss[] = {
-    F_status_set_error(F_busy),
-    F_status_set_error(F_parameter),
-    F_status_set_error(F_failure),
+  f_status_t statuss_1[] = {
+    F_busy,
+    F_parameter,
+    F_mutex,
+  };
+
+  f_status_t statuss_2[] = {
+    F_busy,
+    F_parameter,
+    F_attribute,
   };
 
   for (uint8_t i = 0; i < 3; ++i) {
@@ -33,7 +39,7 @@ void test__f_thread_mutex_fullss_destroy_callback__fails(void **state) {
 
     const f_status_t status = f_thread_mutex_fullss_destroy_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, statuss[i]);
+    assert_int_equal(status, F_status_set_error(statuss_1[i]));
   } // for
 
   {
@@ -45,7 +51,7 @@ void test__f_thread_mutex_fullss_destroy_callback__fails(void **state) {
 
     const f_status_t status = f_thread_mutex_fullss_destroy_callback(0, 1, (void *) datass_array);
 
-    assert_int_equal(status, statuss[i]);
+    assert_int_equal(status, F_status_set_error(statuss_2[i]));
   }
 }