<div dir="ltr">looks good to me, thanks</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jan 29, 2021 at 8:59 AM Sebastian Huber <<a href="mailto:sebastian.huber@embedded-brains.de">sebastian.huber@embedded-brains.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Do not use an enum as a bit field.  Document the state flags.<br>
<br>
This fix relates to a Coverity issue (PW.MIXED_ENUM_TYPE).<br>
---<br>
 cpukit/include/rtems/score/thread.h | 57 ++++++++++++++++++++++++-----<br>
 1 file changed, 47 insertions(+), 10 deletions(-)<br>
<br>
diff --git a/cpukit/include/rtems/score/thread.h b/cpukit/include/rtems/score/thread.h<br>
index 8785879184..ab59ab13e9 100644<br>
--- a/cpukit/include/rtems/score/thread.h<br>
+++ b/cpukit/include/rtems/score/thread.h<br>
@@ -659,22 +659,59 @@ typedef struct {<br>
 } Thread_Action_control;<br>
<br>
 /**<br>
- * @brief Thread life states.<br>
+ * @brief This type represents the thread life state.<br>
  *<br>
- * The thread life states are orthogonal to the thread states used for<br>
+ * The thread life state is orthogonal to the thread state used for<br>
  * synchronization primitives and blocking operations.  They reflect the state<br>
  * changes triggered with thread restart and delete requests.<br>
  *<br>
- * The individual state values must be a power of two to allow use of bit<br>
+ * The individual state flags must be a power of two to allow use of bit<br>
  * operations to manipulate and evaluate the thread life state.<br>
  */<br>
-typedef enum {<br>
-  THREAD_LIFE_PROTECTED = 0x1,<br>
-  THREAD_LIFE_RESTARTING = 0x2,<br>
-  THREAD_LIFE_TERMINATING = 0x4,<br>
-  THREAD_LIFE_CHANGE_DEFERRED = 0x8,<br>
-  THREAD_LIFE_DETACHED = 0x10<br>
-} Thread_Life_state;<br>
+typedef unsigned int Thread_Life_state;<br>
+<br>
+/**<br>
+ * @brief Indicates that the thread life is protected.<br>
+ *<br>
+ * If this flag is set, then the thread restart or delete requests are deferred<br>
+ * until the protection and deferred change flags are cleared.  It is used by<br>
+ * _Thread_Set_life_protection().<br>
+ */<br>
+#define THREAD_LIFE_PROTECTED 0x1U<br>
+<br>
+/**<br>
+ * @brief Indicates that thread is restarting.<br>
+ *<br>
+ * If this flag is set, then a thread restart request is in pending. See<br>
+ * _Thread_Restart_self() and _Thread_Restart_other().<br>
+ */<br>
+#define THREAD_LIFE_RESTARTING 0x2U<br>
+<br>
+/**<br>
+ * @brief Indicates that thread is terminating.<br>
+ *<br>
+ * If this flag is set, then a thread termination request is in pending.  See<br>
+ * _Thread_Exit() and _Thread_Cancel().<br>
+ */<br>
+#define THREAD_LIFE_TERMINATING 0x4U<br>
+<br>
+/**<br>
+ * @brief Indicates that thread life changes are deferred.<br>
+ *<br>
+ * If this flag is set, then the thread restart or delete requests are deferred<br>
+ * until the protection and deferred change flags are cleared.  It is used by<br>
+ * pthread_setcanceltype().<br>
+ */<br>
+#define THREAD_LIFE_CHANGE_DEFERRED 0x8U<br>
+<br>
+/**<br>
+ * @brief Indicates that thread is detached.<br>
+ *<br>
+ * If this flag is set, then the thread is detached.  Detached threads do not<br>
+ * wait during termination for other threads to join.  See rtems_task_delete(),<br>
+ * rtems_task_exit(), and pthread_detach().<br>
+ */<br>
+#define THREAD_LIFE_DETACHED 0x10U<br>
<br>
 /**<br>
  * @brief Thread life control.<br>
-- <br>
2.26.2<br>
<br>
_______________________________________________<br>
devel mailing list<br>
<a href="mailto:devel@rtems.org" target="_blank">devel@rtems.org</a><br>
<a href="http://lists.rtems.org/mailman/listinfo/devel" rel="noreferrer" target="_blank">http://lists.rtems.org/mailman/listinfo/devel</a><br>
</blockquote></div>