|
ChibiOS 21.11.4
|
Threads related APIs and services.
A thread is an abstraction of an independent instructions flow. In ChibiOS/RT a thread is represented by a "C" function owning a processor context, state informations and a dedicated stack area. In this scenario static variables are shared among all threads while automatic variables are local to the thread.
Operations defined for threads:

Threads queues | |
| #define | __THREADS_QUEUE_DATA(name) |
| Data part of a static threads queue object initializer. | |
| #define | THREADS_QUEUE_DECL(name) |
| Static threads queue object initializer. | |
Working Areas | |
| #define | THD_WORKING_AREA_SIZE(n) |
| Calculates the total Working Area size. | |
| #define | THD_WORKING_AREA(s, n) |
| Static working area allocation. | |
| #define | THD_WORKING_AREA_BASE(s) |
| Base of a working area casted to the correct type. | |
| #define | THD_WORKING_AREA_END(s) |
| End of a working area casted to the correct type. | |
Threads abstraction macros | |
| #define | THD_FUNCTION(tname, arg) |
| Thread declaration macro. | |
Threads initializers | |
| #define | THD_DESCRIPTOR(name, wbase, wend, prio, funcp, arg) |
| Thread descriptor initializer with no affinity. | |
| #define | THD_DESCRIPTOR_AFFINITY(name, wbase, wend, prio, funcp, arg, oip) |
| Thread descriptor initializer with no affinity. | |
Macro Functions | |
| #define | chThdSleepSeconds(sec) |
| Delays the invoking thread for the specified number of seconds. | |
| #define | chThdSleepMilliseconds(msec) |
| Delays the invoking thread for the specified number of milliseconds. | |
| #define | chThdSleepMicroseconds(usec) |
| Delays the invoking thread for the specified number of microseconds. | |
Data Structures | |
| struct | thread_descriptor_t |
| Type of a thread descriptor. More... | |
Typedefs | |
| typedef void(* | tfunc_t) (void *p) |
| Thread function. | |
Functions | |
| thread_t * | __thd_object_init (os_instance_t *oip, thread_t *tp, const char *name, tprio_t prio) |
| Initializes a thread structure. | |
| void | __thd_stackfill (uint8_t *startp, uint8_t *endp) |
| Stack fill utility. | |
| thread_t * | chThdCreateSuspendedI (const thread_descriptor_t *tdp) |
| Creates a new thread. | |
| thread_t * | chThdCreateSuspended (const thread_descriptor_t *tdp) |
| Creates a new thread. | |
| thread_t * | chThdCreateI (const thread_descriptor_t *tdp) |
| Creates a new thread. | |
| thread_t * | chThdCreate (const thread_descriptor_t *tdp) |
| Creates a new thread. | |
| thread_t * | chThdCreateStatic (void *wsp, size_t size, tprio_t prio, tfunc_t pf, void *arg) |
| Creates a new thread. | |
| thread_t * | chThdStart (thread_t *tp) |
Starts a thread created with chThdCreateSuspended(). | |
| thread_t * | chThdAddRef (thread_t *tp) |
| Adds a reference to a thread object. | |
| void | chThdRelease (thread_t *tp) |
| Releases a reference to a thread object. | |
| void | chThdExit (msg_t msg) |
| Terminates the current thread. | |
| void | chThdExitS (msg_t msg) |
| Terminates the current thread. | |
| msg_t | chThdWait (thread_t *tp) |
| Blocks the execution of the invoking thread until the specified thread terminates then the exit code is returned. | |
| tprio_t | chThdSetPriority (tprio_t newprio) |
| Changes the running thread priority level then reschedules if necessary. | |
| void | chThdTerminate (thread_t *tp) |
| Requests a thread termination. | |
| void | chThdSleep (sysinterval_t time) |
| Suspends the invoking thread for the specified time. | |
| void | chThdSleepUntil (systime_t time) |
| Suspends the invoking thread until the system time arrives to the specified value. | |
| systime_t | chThdSleepUntilWindowed (systime_t prev, systime_t next) |
| Suspends the invoking thread until the system time arrives to the specified value. | |
| void | chThdYield (void) |
| Yields the time slot. | |
| msg_t | chThdSuspendS (thread_reference_t *trp) |
| Sends the current thread sleeping and sets a reference variable. | |
| msg_t | chThdSuspendTimeoutS (thread_reference_t *trp, sysinterval_t timeout) |
| Sends the current thread sleeping and sets a reference variable. | |
| void | chThdResumeI (thread_reference_t *trp, msg_t msg) |
| Wakes up a thread waiting on a thread reference object. | |
| void | chThdResumeS (thread_reference_t *trp, msg_t msg) |
| Wakes up a thread waiting on a thread reference object. | |
| void | chThdResume (thread_reference_t *trp, msg_t msg) |
| Wakes up a thread waiting on a thread reference object. | |
| msg_t | chThdEnqueueTimeoutS (threads_queue_t *tqp, sysinterval_t timeout) |
| Enqueues the caller thread on a threads queue object. | |
| void | chThdDequeueNextI (threads_queue_t *tqp, msg_t msg) |
| Dequeues and wakes up one thread from the threads queue object, if any. | |
| void | chThdDequeueAllI (threads_queue_t *tqp, msg_t msg) |
| Dequeues and wakes up all threads from the threads queue object. | |
| static thread_t * | chThdGetSelfX (void) |
Returns a pointer to the current thread_t. | |
| static tprio_t | chThdGetPriorityX (void) |
| Returns the current thread priority. | |
| static systime_t | chThdGetTicksX (thread_t *tp) |
| Returns the number of ticks consumed by the specified thread. | |
| static stkalign_t * | chThdGetWorkingAreaX (thread_t *tp) |
| Returns the working area base of the specified thread. | |
| static bool | chThdTerminatedX (thread_t *tp) |
Verifies if the specified thread is in the CH_STATE_FINAL state. | |
| static bool | chThdShouldTerminateX (void) |
| Verifies if the current thread has a termination request pending. | |
| static thread_t * | chThdStartI (thread_t *tp) |
Resumes a thread created with chThdCreateI(). | |
| static void | chThdSleepS (sysinterval_t ticks) |
| Suspends the invoking thread for the specified number of ticks. | |
| static void | chThdQueueObjectInit (threads_queue_t *tqp) |
| Initializes a threads queue object. | |
| static bool | chThdQueueIsEmptyI (threads_queue_t *tqp) |
Evaluates to true if the specified queue is empty. | |
| static void | chThdDoDequeueNextI (threads_queue_t *tqp, msg_t msg) |
| Dequeues and wakes up one thread from the threads queue object. | |
| #define __THREADS_QUEUE_DATA | ( | name | ) |
Data part of a static threads queue object initializer.
This macro should be used when statically initializing a threads queue that is part of a bigger structure.
| [in] | name | the name of the threads queue variable |
Definition at line 105 of file chthreads.h.
| #define THREADS_QUEUE_DECL | ( | name | ) |
Static threads queue object initializer.
Statically initialized threads queues require no explicit initialization using queue_init().
| [in] | name | the name of the threads queue variable |
Definition at line 114 of file chthreads.h.
| #define THD_WORKING_AREA_SIZE | ( | n | ) |
Calculates the total Working Area size.
| [in] | n | the stack size to be assigned to the thread |
Definition at line 130 of file chthreads.h.
Referenced by chThdCreateStatic(), and chThdCreateSuspendedI().
| #define THD_WORKING_AREA | ( | s, | |
| n ) |
Static working area allocation.
This macro is used to allocate a static thread working area aligned as both position and size.
| [in] | s | the name to be assigned to the stack array |
| [in] | n | the stack size to be assigned to the thread |
Definition at line 143 of file chthreads.h.
| #define THD_WORKING_AREA_BASE | ( | s | ) |
Base of a working area casted to the correct type.
| [in] | s | name of the working area |
Definition at line 150 of file chthreads.h.
| #define THD_WORKING_AREA_END | ( | s | ) |
End of a working area casted to the correct type.
| [in] | s | name of the working area |
Definition at line 157 of file chthreads.h.
| #define THD_FUNCTION | ( | tname, | |
| arg ) |
Thread declaration macro.
Definition at line 170 of file chthreads.h.
| #define THD_DESCRIPTOR | ( | name, | |
| wbase, | |||
| wend, | |||
| prio, | |||
| funcp, | |||
| arg ) |
Thread descriptor initializer with no affinity.
| [in] | name | thread name |
| [in] | wbase | pointer to the working area base |
| [in] | wend | pointer to the working area end |
| [in] | prio | thread priority |
| [in] | funcp | thread function pointer |
| [in] | arg | thread argument |
Definition at line 188 of file chthreads.h.
Referenced by chThdCreateFromHeap(), and chThdCreateFromMemoryPool().
| #define THD_DESCRIPTOR_AFFINITY | ( | name, | |
| wbase, | |||
| wend, | |||
| prio, | |||
| funcp, | |||
| arg, | |||
| oip ) |
Thread descriptor initializer with no affinity.
| [in] | name | thread name |
| [in] | wbase | pointer to the working area base |
| [in] | wend | pointer to the working area end |
| [in] | prio | thread priority |
| [in] | funcp | thread function pointer |
| [in] | arg | thread argument |
| [in] | oip | instance affinity |
Definition at line 219 of file chthreads.h.
| #define chThdSleepSeconds | ( | sec | ) |
Delays the invoking thread for the specified number of seconds.
| [in] | sec | time in seconds, must be different from zero |
Definition at line 247 of file chthreads.h.
| #define chThdSleepMilliseconds | ( | msec | ) |
Delays the invoking thread for the specified number of milliseconds.
| [in] | msec | time in milliseconds, must be different from zero |
Definition at line 263 of file chthreads.h.
Referenced by start_p_measurement(), and start_t_measurement().
| #define chThdSleepMicroseconds | ( | usec | ) |
Delays the invoking thread for the specified number of microseconds.
| [in] | usec | time in microseconds, must be different from zero |
Definition at line 279 of file chthreads.h.
| typedef void(* tfunc_t) (void *p) |
Thread function.
Definition at line 52 of file chthreads.h.
| thread_t * __thd_object_init | ( | os_instance_t * | oip, |
| thread_t * | tp, | ||
| const char * | name, | ||
| tprio_t | prio ) |
Initializes a thread structure.
| [in] | oip | pointer to the OS instance |
| [in] | tp | pointer to the thread |
| [in] | name | thread name |
| [in] | prio | the priority level for the new thread |
Definition at line 89 of file chthreads.c.
References CH_CFG_THREAD_INIT_HOOK, CH_CFG_TIME_QUANTUM, CH_FLAG_MODE_STATIC, ch_list_init(), ch_queue_init(), CH_STATE_WTSTART, chTMObjectInit(), ch_thread::epending, ch_thread::flags, ch_thread::hdr, ch_thread::msgqueue, ch_thread::mtxlist, ch_thread::name, ch_thread::owner, ch_thread::pqueue, ch_priority_queue::prio, ch_thread::realprio, ch_thread::refs, REG_INSERT, ch_thread::state, ch_thread::stats, ch_thread::ticks, ch_thread::time, and ch_thread::waiting.
Referenced by chInstanceObjectInit(), chThdCreateStatic(), and chThdCreateSuspendedI().

| void __thd_stackfill | ( | uint8_t * | startp, |
| uint8_t * | endp ) |
Stack fill utility.
| [in] | startp | first address to fill |
| [in] | endp | last address to fill +1 |
Definition at line 140 of file chthreads.c.
References CH_DBG_STACK_FILL_VALUE, and likely.
Referenced by chInstanceObjectInit(), chThdCreate(), chThdCreateFromHeap(), chThdCreateFromMemoryPool(), chThdCreateStatic(), and chThdCreateSuspended().
| thread_t * chThdCreateSuspendedI | ( | const thread_descriptor_t * | tdp | ) |
Creates a new thread.
The new thread is initialized but not inserted in the ready list, the initial state is CH_STATE_WTSTART.
chThdRelease() or chThdWait() in order to release the reference. The thread persists in the registry until its reference counter reaches zero. chThdStart(), chThdStartI() or chSchWakeupS() depending on the execution context. chThdExit() or by simply returning from its main function. CH_DBG_FILL_THREADS debug option because it would keep the kernel locked for too much time.| [in] | tdp | pointer to the thread descriptor |
thread_t structure allocated for the thread into the working space area.Definition at line 171 of file chthreads.c.
References __thd_object_init(), thread_descriptor_t::arg, chDbgCheck, chDbgCheckClassI, currcore, thread_descriptor_t::funcp, HIGHPRIO, thread_descriptor_t::instance, MEM_ALIGN_NEXT, MEM_IS_ALIGNED, thread_descriptor_t::name, PORT_SETUP_CONTEXT, PORT_STACK_ALIGN, PORT_WORKING_AREA_ALIGN, thread_descriptor_t::prio, THD_WORKING_AREA_SIZE, threadref, ch_thread::wabase, thread_descriptor_t::wbase, and thread_descriptor_t::wend.
Referenced by chThdCreate(), chThdCreateFromHeap(), chThdCreateFromMemoryPool(), chThdCreateI(), and chThdCreateSuspended().

| thread_t * chThdCreateSuspended | ( | const thread_descriptor_t * | tdp | ) |
Creates a new thread.
The new thread is initialized but not inserted in the ready list, the initial state is CH_STATE_WTSTART.
chThdRelease() or chThdWait() in order to release the reference. The thread persists in the registry until its reference counter reaches zero. chThdStart(), chThdStartI() or chSchWakeupS() depending on the execution context. chThdExit() or by simply returning from its main function.| [in] | tdp | pointer to the thread descriptor |
thread_t structure allocated for the thread into the working space area.Definition at line 226 of file chthreads.c.
References __thd_stackfill(), chDbgAssert, chRegFindThreadByWorkingArea(), chSysLock, chSysUnlock, chThdCreateSuspendedI(), thread_descriptor_t::wbase, and thread_descriptor_t::wend.

| thread_t * chThdCreateI | ( | const thread_descriptor_t * | tdp | ) |
Creates a new thread.
The new thread is initialized and make ready to execute.
chThdRelease() or chThdWait() in order to release the reference. The thread persists in the registry until its reference counter reaches zero. chThdExit() or by simply returning from its main function. CH_DBG_FILL_THREADS debug option because it would keep the kernel locked for too much time.| [in] | tdp | pointer to the thread descriptor |
thread_t structure allocated for the thread into the working space area.Definition at line 264 of file chthreads.c.
References chSchReadyI(), and chThdCreateSuspendedI().
Referenced by chInstanceObjectInit().

| thread_t * chThdCreate | ( | const thread_descriptor_t * | tdp | ) |
Creates a new thread.
The new thread is initialized and make ready to execute.
chThdRelease() or chThdWait() in order to release the reference. The thread persists in the registry until its reference counter reaches zero. chThdExit() or by simply returning from its main function.| [in] | tdp | pointer to the thread descriptor |
thread_t structure allocated for the thread into the working space area.Definition at line 285 of file chthreads.c.
References __thd_stackfill(), chDbgAssert, chRegFindThreadByWorkingArea(), chSchWakeupS, chSysLock, chSysUnlock, chThdCreateSuspendedI(), MSG_OK, thread_descriptor_t::wbase, and thread_descriptor_t::wend.

Creates a new thread.
chThdRelease() or chThdWait() in order to release the reference. The thread persists in the registry until its reference counter reaches zero. chThdExit() or by simply returning from its main function.| [out] | wsp | pointer to a working area dedicated to the thread stack |
| [in] | size | size of the working area |
| [in] | prio | priority level for the new thread |
| [in] | pf | thread function |
| [in] | arg | an argument passed to the thread function. It can be NULL. |
thread_t structure allocated for the thread into the working space area.Definition at line 326 of file chthreads.c.
References __thd_object_init(), __thd_stackfill(), chDbgAssert, chDbgCheck, chRegFindThreadByWorkingArea(), chSchWakeupS, chSysLock, chSysUnlock, currcore, HIGHPRIO, MEM_ALIGN_NEXT, MEM_IS_ALIGNED, MSG_OK, PORT_SETUP_CONTEXT, PORT_STACK_ALIGN, PORT_WORKING_AREA_ALIGN, THD_WORKING_AREA_SIZE, threadref, and ch_thread::wabase.

Starts a thread created with chThdCreateSuspended().
| [in] | tp | pointer to the thread |
Definition at line 379 of file chthreads.c.
References CH_STATE_WTSTART, chDbgAssert, chSchWakeupS, chSysLock, chSysUnlock, MSG_OK, and ch_thread::state.
Adds a reference to a thread object.
CH_CFG_USE_REGISTRY must be enabled in order to use this function.| [in] | tp | pointer to the thread |
Definition at line 401 of file chthreads.c.
References chDbgAssert, chSysLock, chSysUnlock, and ch_thread::refs.
| void chThdRelease | ( | thread_t * | tp | ) |
Releases a reference to a thread object.
If the references counter reaches zero and the thread is in the CH_STATE_FINAL state then the thread's memory is returned to the proper allocator and the thread is removed from the registry.
Threads whose counter reaches zero and are still active become "detached". Detached static threads will be removed from the registry on termination. Detached non-static threads can only be removed by performing a registry scan operation.
CH_CFG_USE_REGISTRY must be enabled in order to use this function. | [in] | tp | pointer to the thread |
Definition at line 429 of file chthreads.c.
References CH_FLAG_MODE_HEAP, CH_FLAG_MODE_MASK, CH_FLAG_MODE_MPOOL, CH_STATE_FINAL, chDbgAssert, chHeapFree(), chPoolFree(), chSysLock, chSysUnlock, chThdGetWorkingAreaX(), ch_thread::flags, ch_thread::mpool, ch_thread::refs, REG_REMOVE, and ch_thread::state.
Referenced by chRegNextThread(), and chThdWait().

| void chThdExit | ( | msg_t | msg | ) |
Terminates the current thread.
The thread goes in the CH_STATE_FINAL state holding the specified exit status code, other threads can retrieve the exit status code by invoking the function chThdWait().
| [in] | msg | thread exit code |
Definition at line 479 of file chthreads.c.
References chSysLock, and chThdExitS().

| void chThdExitS | ( | msg_t | msg | ) |
Terminates the current thread.
The thread goes in the CH_STATE_FINAL state holding the specified exit status code, other threads can retrieve the exit status code by invoking the function chThdWait().
| [in] | msg | thread exit code |
Definition at line 503 of file chthreads.c.
References CH_CFG_THREAD_EXIT_HOOK, CH_FLAG_MODE_MASK, CH_FLAG_MODE_STATIC, ch_list_notempty(), ch_list_unlink(), CH_STATE_FINAL, chDbgAssert, chSchGoSleepS, chSchReadyI(), chThdGetSelfX, ch_thread::exitcode, ch_thread::flags, ch_thread::refs, REG_REMOVE, threadref, ch_thread::u, unlikely, and ch_thread::waiting.
Referenced by chThdExit().

Blocks the execution of the invoking thread until the specified thread terminates then the exit code is returned.
This function waits for the specified thread to terminate then decrements its reference counter, if the counter reaches zero then the thread working area is returned to the proper allocator and the thread is removed from the registry.
CH_CFG_USE_WAITEXIT must be enabled in order to use this function. chThdWait() requires 2-4 (depending on the architecture) extra bytes in the thread_t structure. CH_CFG_USE_DYNAMIC is not specified this function just waits for the thread termination, no memory allocators are involved.| [in] | tp | pointer to the thread |
Definition at line 560 of file chthreads.c.
References ch_list_link(), CH_STATE_FINAL, CH_STATE_WTEXIT, chDbgAssert, chDbgCheck, chSchGoSleepS, chSysLock, chSysUnlock, chThdGetSelfX, chThdRelease(), ch_thread::exitcode, ch_thread::hdr, likely, ch_thread::list, ch_thread::refs, ch_thread::state, ch_thread::u, and ch_thread::waiting.

Changes the running thread priority level then reschedules if necessary.
| [in] | newprio | the new priority level of the running thread |
Definition at line 600 of file chthreads.c.
References chDbgCheck, chSchRescheduleS(), chSysLock, chSysUnlock, chThdGetSelfX, ch_thread::hdr, HIGHPRIO, ch_thread::pqueue, ch_priority_queue::prio, and ch_thread::realprio.

| void chThdTerminate | ( | thread_t * | tp | ) |
Requests a thread termination.
chThdShouldTerminate() and terminate cleanly if it returns true. | [in] | tp | pointer to the thread |
Definition at line 636 of file chthreads.c.
References CH_FLAG_TERMINATE, chSysLock, chSysUnlock, and ch_thread::flags.
| void chThdSleep | ( | sysinterval_t | time | ) |
Suspends the invoking thread for the specified time.
| [in] | time | the delay in system ticks, the special values are handled as follow:
|
Definition at line 655 of file chthreads.c.
References chSysLock, chSysUnlock, and chThdSleepS.
| void chThdSleepUntil | ( | systime_t | time | ) |
Suspends the invoking thread until the system time arrives to the specified value.
| [in] | time | absolute system time |
Definition at line 675 of file chthreads.c.
References chSysLock, chSysUnlock, chThdSleepS, chTimeDiffX, chVTGetSystemTimeX, and likely.
Suspends the invoking thread until the system time arrives to the specified value.
prev and next else the call is assumed to have been called outside the allowed time interval, in this case no sleep is performed. | [in] | prev | absolute system time of the previous deadline |
| [in] | next | absolute system time of the next deadline |
next parameterDefinition at line 700 of file chthreads.c.
References chSysLock, chSysUnlock, chThdSleepS, chTimeDiffX, chTimeIsInRangeX(), chVTGetSystemTimeX, and likely.

| void chThdYield | ( | void | ) |
Yields the time slot.
Yields the CPU control to the next thread in the ready list with equal priority, if any.
Definition at line 720 of file chthreads.c.
References chSchDoYieldS(), chSysLock, and chSysUnlock.

| msg_t chThdSuspendS | ( | thread_reference_t * | trp | ) |
Sends the current thread sleeping and sets a reference variable.
| [in] | trp | a pointer to a thread reference object |
Definition at line 737 of file chthreads.c.
References CH_STATE_SUSPENDED, chDbgAssert, chSchGoSleepS, chThdGetSelfX, ch_thread::u, and ch_thread::wttrp.
| msg_t chThdSuspendTimeoutS | ( | thread_reference_t * | trp, |
| sysinterval_t | timeout ) |
Sends the current thread sleeping and sets a reference variable.
| [in] | trp | a pointer to a thread reference object |
| [in] | timeout | the timeout in system ticks, the special values are handled as follow:
|
| MSG_TIMEOUT | if the operation timed out. |
Definition at line 768 of file chthreads.c.
References CH_STATE_SUSPENDED, chDbgAssert, chSchGoSleepTimeoutS(), chThdGetSelfX, MSG_TIMEOUT, TIME_IMMEDIATE, ch_thread::u, unlikely, and ch_thread::wttrp.
Referenced by chPipeReadTimeout(), and chPipeWriteTimeout().

| void chThdResumeI | ( | thread_reference_t * | trp, |
| msg_t | msg ) |
Wakes up a thread waiting on a thread reference object.
| [in] | trp | a pointer to a thread reference object |
| [in] | msg | the message code |
Definition at line 793 of file chthreads.c.
References CH_STATE_SUSPENDED, chDbgAssert, chSchReadyI(), ch_thread::rdymsg, ch_thread::state, and ch_thread::u.
Referenced by chPipeReset().

| void chThdResumeS | ( | thread_reference_t * | trp, |
| msg_t | msg ) |
Wakes up a thread waiting on a thread reference object.
| [in] | trp | a pointer to a thread reference object |
| [in] | msg | the message code |
Definition at line 816 of file chthreads.c.
References CH_STATE_SUSPENDED, chDbgAssert, chSchWakeupS, and ch_thread::state.
| void chThdResume | ( | thread_reference_t * | trp, |
| msg_t | msg ) |
Wakes up a thread waiting on a thread reference object.
| [in] | trp | a pointer to a thread reference object |
| [in] | msg | the message code |
Definition at line 838 of file chthreads.c.
References chSysLock, chSysUnlock, and chThdResumeS.
Referenced by chPipeReadTimeout(), and chPipeWriteTimeout().
| msg_t chThdEnqueueTimeoutS | ( | threads_queue_t * | tqp, |
| sysinterval_t | timeout ) |
Enqueues the caller thread on a threads queue object.
The caller thread is enqueued and put to sleep until it is dequeued or the specified timeouts expires.
| [in] | tqp | pointer to a threads_queue_t object |
| [in] | timeout | the timeout in system ticks, the special values are handled as follow:
|
osalQueueWakeupOneI() or osalQueueWakeupAllI() functions. | MSG_TIMEOUT | if the thread has not been dequeued within the specified timeout or if the function has been invoked with TIME_IMMEDIATE as timeout specification. |
Definition at line 868 of file chthreads.c.
References ch_queue_insert(), CH_STATE_QUEUED, chSchGoSleepTimeoutS(), chThdGetSelfX, MSG_TIMEOUT, TIME_IMMEDIATE, and unlikely.
Referenced by chMBFetchTimeoutS(), chMBPostAheadTimeoutS(), and chMBPostTimeoutS().

| void chThdDequeueNextI | ( | threads_queue_t * | tqp, |
| msg_t | msg ) |
Dequeues and wakes up one thread from the threads queue object, if any.
| [in] | tqp | pointer to a threads_queue_t object |
| [in] | msg | the message code |
Definition at line 889 of file chthreads.c.
References ch_queue_notempty(), and chThdDoDequeueNextI().
Referenced by chMBFetchI(), chMBFetchTimeoutS(), chMBPostAheadI(), chMBPostAheadTimeoutS(), chMBPostI(), and chMBPostTimeoutS().

| void chThdDequeueAllI | ( | threads_queue_t * | tqp, |
| msg_t | msg ) |
Dequeues and wakes up all threads from the threads queue object.
| [in] | tqp | pointer to a threads_queue_t object |
| [in] | msg | the message code |
Definition at line 904 of file chthreads.c.
References ch_queue_notempty(), and chThdDoDequeueNextI().
Referenced by chMBResetI().

|
inlinestatic |
Returns a pointer to the current thread_t.
Definition at line 341 of file chthreads.h.
References __sch_get_currthread.
Referenced by chThdGetPriorityX(), and chThdShouldTerminateX().
|
inlinestatic |
Returns the current thread priority.
Definition at line 354 of file chthreads.h.
References chThdGetSelfX(), ch_thread::hdr, ch_thread::pqueue, and ch_priority_queue::prio.

Returns the number of ticks consumed by the specified thread.
CH_DBG_THREADS_PROFILING configuration option is enabled.| [in] | tp | pointer to the thread |
Definition at line 370 of file chthreads.h.
References ch_thread::time.
|
inlinestatic |
Returns the working area base of the specified thread.
| [in] | tp | pointer to the thread |
Definition at line 386 of file chthreads.h.
References ch_thread::wabase.
Referenced by chRegFindThreadByWorkingArea(), and chThdRelease().
|
inlinestatic |
Verifies if the specified thread is in the CH_STATE_FINAL state.
| [in] | tp | pointer to the thread |
| true | thread terminated. |
| false | thread not terminated. |
Definition at line 401 of file chthreads.h.
References CH_STATE_FINAL, and ch_thread::state.
|
inlinestatic |
Verifies if the current thread has a termination request pending.
| true | termination request pending. |
| false | termination request not pending. |
Definition at line 414 of file chthreads.h.
References CH_FLAG_TERMINATE, chThdGetSelfX(), and ch_thread::flags.

Resumes a thread created with chThdCreateI().
| [in] | tp | pointer to the thread |
thread_t structure allocated for the thread into the working space area.Definition at line 428 of file chthreads.h.
References CH_STATE_WTSTART, chDbgAssert, chSchReadyI(), and ch_thread::state.

|
inlinestatic |
Suspends the invoking thread for the specified number of ticks.
| [in] | ticks | the delay in system ticks, the special values are handled as follow:
|
Definition at line 447 of file chthreads.h.
References CH_STATE_SLEEPING, chDbgCheck, chSchGoSleepTimeoutS(), and TIME_IMMEDIATE.

|
inlinestatic |
Initializes a threads queue object.
| [out] | tqp | pointer to the threads queue object |
Definition at line 461 of file chthreads.h.
References ch_queue_init().

|
inlinestatic |
Evaluates to true if the specified queue is empty.
| [out] | tqp | pointer to the threads queue object |
| false | if the queue is not empty. |
| true | if the queue is empty. |
Definition at line 476 of file chthreads.h.
References ch_queue_isempty(), and chDbgCheckClassI.

|
inlinestatic |
Dequeues and wakes up one thread from the threads queue object.
Dequeues one thread from the queue without checking if the queue is empty.
| [in] | tqp | pointer to the threads queue object |
| [in] | msg | the message code |
Definition at line 494 of file chthreads.h.
References ch_queue_fifo_remove(), ch_queue_notempty(), CH_STATE_QUEUED, chDbgAssert, chSchReadyI(), ch_thread::rdymsg, ch_thread::state, threadref, and ch_thread::u.
Referenced by chThdDequeueAllI(), and chThdDequeueNextI().
