From 4e07d9b3deb601ecb203ebac65f30304663355d9 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 5 Jan 2017 15:40:57 +0100 Subject: score: Optimize thread state values --- cpukit/score/include/rtems/score/statesimpl.h | 121 ++++++++++++++++---------- 1 file changed, 73 insertions(+), 48 deletions(-) diff --git a/cpukit/score/include/rtems/score/statesimpl.h b/cpukit/score/include/rtems/score/statesimpl.h index 89187b7e27..9751de0228 100644 --- a/cpukit/score/include/rtems/score/statesimpl.h +++ b/cpukit/score/include/rtems/score/statesimpl.h @@ -33,71 +33,96 @@ 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 0x00000100 + +/** 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 for a join while exiting. */ +#define STATES_WAITING_FOR_JOIN_AT_EXIT 0x00004000 + /** 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 0x00008000 + +/** This macro corresponds to a task being suspended. */ +#define STATES_SUSPENDED 0x00010000 + +/** This macro corresponds to a task waiting for a fixed size segment. */ +#define STATES_WAITING_FOR_SEGMENT 0x00020000 + +/** This macro corresponds to a task those life is changing. */ +#define STATES_LIFE_IS_CHANGING 0x00040000 + +/** This macro corresponds to a task waiting until a specific TOD. */ +#define STATES_WAITING_FOR_TIME 0x00080000 + +/** This macro corresponds to a task being held by the debugger. */ +#define STATES_DEBUGGER 0x08000000 /** 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_THREAD_QUEUE_WITH_IDENTIFIER | \ -- cgit v1.2.3