[PATCH 4/4] score: Optimize thread state values
Sebastian Huber
sebastian.huber at embedded-brains.de
Tue Jan 10 14:35:07 UTC 2017
---
cpukit/score/include/rtems/score/statesimpl.h | 118 +++++++++++++++-----------
1 file changed, 70 insertions(+), 48 deletions(-)
diff --git a/cpukit/score/include/rtems/score/statesimpl.h b/cpukit/score/include/rtems/score/statesimpl.h
index 5386b3e..424bcdc 100644
--- a/cpukit/score/include/rtems/score/statesimpl.h
+++ b/cpukit/score/include/rtems/score/statesimpl.h
@@ -33,71 +33,93 @@ extern "C" {
/*
* The following constants define the individual states which may be
- * be used to compose and manipulate a thread's state.
+ * be used to compose and manipulate a thread's state. More frequently used
+ * states should use lower value bits to ease the use of immediate values on
+ * RISC architectures.
*/
/** This macro corresponds to a task being ready. */
#define STATES_READY 0x00000000
-/** This macro corresponds to a task being created but not yet started. */
-#define STATES_DORMANT 0x00000001
-/** This macro corresponds to a task being suspended. */
-#define STATES_SUSPENDED 0x00000002
-/** This macro corresponds to a task which is waiting for a timeout. */
-#define STATES_DELAYING 0x00000008
-/** This macro corresponds to a task waiting until a specific TOD. */
-#define STATES_WAITING_FOR_TIME 0x00000010
-/** This macro corresponds to a task waiting for a fixed size segment. */
-#define STATES_WAITING_FOR_SEGMENT 0x00000040
-/** This macro corresponds to a task waiting for a message. */
-#define STATES_WAITING_FOR_MESSAGE 0x00000080
-/** This macro corresponds to a task waiting for an event. */
-#define STATES_WAITING_FOR_EVENT 0x00000100
-/** This macro corresponds to a task waiting for a semaphore. */
-#define STATES_WAITING_FOR_SEMAPHORE 0x00000200
+
+/**
+ * @brief This macro corresponds to a task which is blocked on a thread queue
+ * embedded in an object with an identifier.
+ *
+ * This thread state bit is intended to ease debugging and improve system
+ * diagnostics, see _Thread_Wait_get_id().
+ */
+#define STATES_THREAD_QUEUE_WITH_IDENTIFIER 0x00000001
+
/** This macro corresponds to a task waiting for a mutex. */
-#define STATES_WAITING_FOR_MUTEX 0x00000400
+#define STATES_WAITING_FOR_MUTEX 0x00000002
+
+/** This macro corresponds to a task waiting for a semaphore. */
+#define STATES_WAITING_FOR_SEMAPHORE 0x00000004
+
+/** This macro corresponds to a task waiting for an event. */
+#define STATES_WAITING_FOR_EVENT 0x00000008
+
+/** This macro corresponds to a task waiting for a system event. */
+#define STATES_WAITING_FOR_SYSTEM_EVENT 0x00000010
+
+/** This macro corresponds to a task waiting for a message. */
+#define STATES_WAITING_FOR_MESSAGE 0x00000020
+
/** This macro corresponds to a task waiting for a condition variable. */
-#define STATES_WAITING_FOR_CONDITION_VARIABLE 0x00000800
-/** This macro corresponds to a task waiting for a join while exiting. */
-#define STATES_WAITING_FOR_JOIN_AT_EXIT 0x00001000
-/** This macro corresponds to a task waiting for a reply to an MPCI request. */
-#define STATES_WAITING_FOR_RPC_REPLY 0x00002000
+#define STATES_WAITING_FOR_CONDITION_VARIABLE 0x00000040
+
+/** This macro corresponds to a task waiting for a futex. */
+#define STATES_WAITING_FOR_FUTEX 0x00000080
+
+/** This macro corresponds to a task waiting for BSD wakeup. */
+#define STATES_WAITING_FOR_BSD_WAKEUP 0x00000010
+
+/** This macro corresponds to a task which is waiting for a timeout. */
+#define STATES_DELAYING 0x00000200
+
/** This macro corresponds to a task waiting for a period. */
-#define STATES_WAITING_FOR_PERIOD 0x00004000
+#define STATES_WAITING_FOR_PERIOD 0x00000400
+
/** This macro corresponds to a task waiting for a signal. */
-#define STATES_WAITING_FOR_SIGNAL 0x00008000
+#define STATES_WAITING_FOR_SIGNAL 0x00000800
+
/** This macro corresponds to a task waiting for a barrier. */
-#define STATES_WAITING_FOR_BARRIER 0x00010000
+#define STATES_WAITING_FOR_BARRIER 0x00001000
+
/** This macro corresponds to a task waiting for a RWLock. */
-#define STATES_WAITING_FOR_RWLOCK 0x00020000
-/** This macro corresponds to a task waiting for a system event. */
-#define STATES_WAITING_FOR_SYSTEM_EVENT 0x00040000
-/** This macro corresponds to a task waiting for BSD wakeup. */
-#define STATES_WAITING_FOR_BSD_WAKEUP 0x00080000
-/** This macro corresponds to a task being held by the debugger. */
-#define STATES_DEBUGGER 0x00100000
-/** This macro corresponds to a task being a zombie. */
-#define STATES_ZOMBIE 0x00200000
-/** This macro corresponds to a task those life is changing. */
-#define STATES_LIFE_IS_CHANGING 0x00800000
+#define STATES_WAITING_FOR_RWLOCK 0x00002000
+
+/** This macro corresponds to a task waiting until a specific TOD. */
+#define STATES_WAITING_FOR_TIME 0x00004000
+
+/** This macro corresponds to a task waiting for a join while exiting. */
+#define STATES_WAITING_FOR_JOIN_AT_EXIT 0x00008000
+
/** This macro corresponds to a task waiting for a join. */
-#define STATES_WAITING_FOR_JOIN 0x01000000
-/** This macro corresponds to a task waiting for a futex. */
-#define STATES_WAITING_FOR_FUTEX 0x08000000
+#define STATES_WAITING_FOR_JOIN 0x00010000
+
+/** This macro corresponds to a task being suspended. */
+#define STATES_SUSPENDED 0x00020000
+
+/** This macro corresponds to a task waiting for a fixed size segment. */
+#define STATES_WAITING_FOR_SEGMENT 0x00040000
+
+/** This macro corresponds to a task those life is changing. */
+#define STATES_LIFE_IS_CHANGING 0x00080000
/** This macro corresponds to a task which is in an interruptible
* blocking state.
*/
#define STATES_INTERRUPTIBLE_BY_SIGNAL 0x10000000
-/**
- * @brief This macro corresponds to a task which is blocked on a thread queue
- * embedded in an object with an identifier.
- *
- * This thread state bit is intended to ease debugging and improve system
- * diagnostics, see _Thread_Wait_get_id().
- */
-#define STATES_THREAD_QUEUE_WITH_IDENTIFIER 0x80000000
+/** This macro corresponds to a task waiting for a reply to an MPCI request. */
+#define STATES_WAITING_FOR_RPC_REPLY 0x20000000
+
+/** This macro corresponds to a task being a zombie. */
+#define STATES_ZOMBIE 0x40000000
+
+/** This macro corresponds to a task being created but not yet started. */
+#define STATES_DORMANT 0x80000000
/** This macro corresponds to a task waiting for a local object operation. */
#define STATES_LOCALLY_BLOCKED ( STATES_WAITING_FOR_SEGMENT | \
--
1.8.4.5
More information about the devel
mailing list