74 #if (CH_CFG_USE_MUTEXES == TRUE) || defined(__DOXYGEN__) 109 #if CH_CFG_USE_MUTEXES_RECURSIVE == TRUE 146 if (mp->
owner != NULL) {
147 #if CH_CFG_USE_MUTEXES_RECURSIVE == TRUE 153 if (mp->
owner == ctp) {
177 #if (CH_CFG_USE_CONDVARS == TRUE) || \ 178 ((CH_CFG_USE_SEMAPHORES == TRUE) && \ 179 (CH_CFG_USE_SEMAPHORES_PRIORITY == TRUE)) || \ 180 ((CH_CFG_USE_MESSAGES == TRUE) && \ 181 (CH_CFG_USE_MESSAGES_PRIORITY == TRUE)) 182 #if CH_CFG_USE_CONDVARS == TRUE 185 #if (CH_CFG_USE_SEMAPHORES == TRUE) && \ 186 (CH_CFG_USE_SEMAPHORES_PRIORITY == TRUE) 189 #if (CH_CFG_USE_MESSAGES == TRUE) && (CH_CFG_USE_MESSAGES_PRIORITY == TRUE) 197 #if CH_DBG_ENABLE_ASSERTS == TRUE 220 #if CH_CFG_USE_MUTEXES_RECURSIVE == TRUE 226 #if CH_CFG_USE_MUTEXES_RECURSIVE == TRUE 287 if (mp->
owner != NULL) {
288 #if CH_CFG_USE_MUTEXES_RECURSIVE == TRUE 299 #if CH_CFG_USE_MUTEXES_RECURSIVE == TRUE 333 #if CH_CFG_USE_MUTEXES_RECURSIVE == TRUE 336 if (--mp->
cnt == (cnt_t)0) {
354 while (lmp != NULL) {
371 #if CH_CFG_USE_MUTEXES_RECURSIVE == TRUE 389 #if CH_CFG_USE_MUTEXES_RECURSIVE == TRUE 419 #if CH_CFG_USE_MUTEXES_RECURSIVE == TRUE 422 if (--mp->
cnt == (cnt_t)0) {
440 while (lmp != NULL) {
457 #if CH_CFG_USE_MUTEXES_RECURSIVE == TRUE 469 #if CH_CFG_USE_MUTEXES_RECURSIVE == TRUE 494 #if CH_CFG_USE_MUTEXES_RECURSIVE == TRUE 504 #if CH_CFG_USE_MUTEXES_RECURSIVE == TRUE 533 #if CH_CFG_USE_MUTEXES_RECURSIVE == TRUE 543 #if CH_CFG_USE_MUTEXES_RECURSIVE == TRUE 548 }
while (ctp->
mtxlist != NULL);
bool chMtxTryLock(mutex_t *mp)
Tries to lock a mutex.
void chDbgCheckClassS(void)
S-class functions context check.
threads_queue_t queue
Queue of the threads sleeping on this mutex.
void chMtxUnlockS(mutex_t *mp)
Unlocks the specified mutex.
static void chSysLock(void)
Enters the kernel lock state.
tprio_t prio
Thread priority.
struct ch_mutex * mtxlist
List of the mutexes owned by this thread.
#define CH_STATE_WTMTX
On a mutex.
thread_t * chSchReadyI(thread_t *tp)
Inserts a thread in the Ready List placing it behind its peers.
void queue_prio_insert(thread_t *tp, threads_queue_t *tqp)
Inserts a thread into a priority ordered queue.
#define CH_STATE_CURRENT
Currently running.
#define currp
Current thread pointer access macro.
static void chSysUnlock(void)
Leaves the kernel lock state.
struct ch_mutex * wtmtxp
Pointer to a generic mutex object.
#define CH_STATE_WTCOND
On a cond.variable.
void chMtxUnlockAllS(void)
Unlocks all mutexes owned by the invoking thread.
#define CH_STATE_SNDMSGQ
Sending a message, in queue.
thread_t * owner
Owner thread_t pointer or NULL.
void chSchRescheduleS(void)
Performs a reschedule if a higher priority thread is runnable.
thread_t * next
Next in the list/queue.
mutex_t * next
Next mutex_t into an owner-list or NULL.
void chSchGoSleepS(tstate_t newstate)
Puts the current thread to sleep into the specified state.
static void queue_init(threads_queue_t *tqp)
Threads queue initialization.
#define chDbgCheck(c)
Function parameters check.
void chMtxLock(mutex_t *mp)
Locks the specified mutex.
bool chMtxTryLockS(mutex_t *mp)
Tries to lock a mutex.
#define chDbgAssert(c, r)
Condition assertion.
#define CH_STATE_READY
Waiting on the ready list.
tstate_t state
Current thread state.
#define CH_STATE_WTSEM
On a semaphore.
static bool chMtxQueueNotEmptyS(mutex_t *mp)
Returns true if the mutex queue contains at least a waiting thread.
union ch_thread::@0 u
State-specific fields.
thread_t * queue_dequeue(thread_t *tp)
Removes a thread from a queue and returns it.
void chMtxObjectInit(mutex_t *mp)
Initializes s mutex_t structure.
cnt_t cnt
Mutex recursion counter.
void chMtxUnlock(mutex_t *mp)
Unlocks the specified mutex.
ChibiOS/RT main include file.
thread_t * queue_fifo_remove(threads_queue_t *tqp)
Removes the first-out thread from a queue and returns it.
tprio_t realprio
Thread's own, non-inherited, priority.
void chMtxUnlockAll(void)
Unlocks all mutexes owned by the invoking thread.
void chMtxLockS(mutex_t *mp)
Locks the specified mutex.
Structure representing a thread.