|
ChibiOS 21.11.4
|

Kernel types | |
| typedef port_rtcnt_t | rtcnt_t |
| typedef port_syssts_t | syssts_t |
| typedef port_stkalign_t | stkalign_t |
| typedef uint8_t | tstate_t |
| typedef uint32_t | tprio_t |
| typedef int32_t | msg_t |
| typedef int32_t | eventid_t |
| typedef uint32_t | eventmask_t |
| typedef uint32_t | eventflags_t |
| typedef int32_t | cnt_t |
| typedef uint32_t | ucnt_t |
ChibiOS/NIL version identification | |
| #define | CH_KERNEL_VERSION "4.1.3" |
| Kernel version string. | |
| #define | CH_KERNEL_MAJOR 4 |
| Kernel version major number. | |
| #define | CH_KERNEL_MINOR 1 |
| Kernel version minor number. | |
| #define | CH_KERNEL_PATCH 3 |
| Kernel version patch number. | |
Constants for configuration options | |
| #define | FALSE 0 |
| Generic 'false' preprocessor boolean constant. | |
| #define | TRUE 1 |
| Generic 'true' preprocessor boolean constant. | |
Wakeup messages | |
| #define | MSG_OK (msg_t)0 |
| OK wakeup message. | |
| #define | MSG_TIMEOUT (msg_t)-1 |
| Wake-up caused by a timeout condition. | |
| #define | MSG_RESET (msg_t)-2 |
| Wake-up caused by a reset condition. | |
Special time constants | |
| #define | TIME_IMMEDIATE ((sysinterval_t)-1) |
| Zero time specification for some functions with a timeout specification. | |
| #define | TIME_INFINITE ((sysinterval_t)0) |
| Infinite time specification for all functions with a timeout specification. | |
| #define | TIME_MAX_INTERVAL ((sysinterval_t)-2) |
| Maximum interval constant usable as timeout. | |
| #define | TIME_MAX_SYSTIME ((systime_t)-1) |
| Maximum system of system time before it wraps. | |
Thread state related macros | |
| #define | NIL_STATE_WTSTART (tstate_t)0 |
| Thread not yet started or terminated. | |
| #define | NIL_STATE_READY (tstate_t)1 |
| Thread ready or executing. | |
| #define | NIL_STATE_SLEEPING (tstate_t)2 |
| Thread sleeping. | |
| #define | NIL_STATE_SUSPENDED (tstate_t)3 |
| Thread suspended. | |
| #define | NIL_STATE_WTEXIT (tstate_t)4 |
| Waiting a thread. | |
| #define | NIL_STATE_WTQUEUE (tstate_t)5 |
| On queue or semaph. | |
| #define | NIL_STATE_WTOREVT (tstate_t)6 |
| Waiting for events. | |
| #define | NIL_STATE_WTANDEVT (tstate_t)7 |
| Waiting for events. | |
| #define | NIL_STATE_SNDMSGQ (tstate_t)8 |
| Sending a message, in queue. | |
| #define | NIL_STATE_WTMSG (tstate_t)1 |
| Waiting for a message. | |
| #define | NIL_STATE_FINAL (tstate_t)1 |
| Thread terminated. | |
| #define | NIL_THD_IS_WTSTART(tp) |
| #define | NIL_THD_IS_READY(tp) |
| #define | NIL_THD_IS_SLEEPING(tp) |
| #define | NIL_THD_IS_SUSPENDED(tp) |
| #define | NIL_THD_IS_WTEXIT(tp) |
| #define | NIL_THD_IS_WTQUEUE(tp) |
| #define | NIL_THD_IS_WTOREVT(tp) |
| #define | NIL_THD_IS_WTANDEVT(tp) |
| #define | NIL_THD_IS_SNDMSGQ(tp) |
| #define | NIL_THD_IS_WTMSG(tp) |
| #define | NIL_THD_IS_FINAL(tp) |
| #define | CH_STATE_NAMES |
RT options not existing in NIL | |
| #define | CH_CFG_USE_REGISTRY FALSE |
Threads tables definition macros | |
| #define | THD_TABLE_BEGIN const thread_descriptor_t nil_thd_configs[] = { |
| Start of user threads table. | |
| #define | THD_TABLE_THREAD(_prio, _name, _wap, _funcp, _arg) |
| Entry of user threads table. | |
| #define | THD_TABLE_END |
| End of user threads table. | |
Memory alignment support macros | |
| #define | MEM_ALIGN_MASK(a) |
| Alignment mask constant. | |
| #define | MEM_ALIGN_PREV(p, a) |
| Aligns to the previous aligned memory address. | |
| #define | MEM_ALIGN_NEXT(p, a) |
| Aligns to the new aligned memory address. | |
| #define | MEM_IS_ALIGNED(p, a) |
| Returns whatever a pointer or memory size is aligned. | |
| #define | MEM_IS_VALID_ALIGNMENT(a) |
| Returns whatever a constant is a valid alignment. | |
Working Areas | |
| #define | THD_WORKING_AREA_SIZE(n) |
| Calculates the total Working Area size. | |
| #define | THD_WORKING_AREA(s, n) |
| Static working area allocation. | |
Threads abstraction macros | |
| #define | THD_FUNCTION(tname, arg) |
| Thread declaration macro. | |
ISRs abstraction macros | |
| #define | CH_IRQ_IS_VALID_PRIORITY(prio) |
| Priority level validation macro. | |
| #define | CH_IRQ_IS_VALID_KERNEL_PRIORITY(prio) |
| Priority level validation macro. | |
| #define | CH_IRQ_PROLOGUE() |
| IRQ handler enter code. | |
| #define | CH_IRQ_EPILOGUE() |
| IRQ handler exit code. | |
| #define | CH_IRQ_HANDLER(id) |
| Standard normal IRQ handler declaration. | |
Fast ISRs abstraction macros | |
| #define | CH_FAST_IRQ_HANDLER(id) |
| Standard fast IRQ handler declaration. | |
Time conversion utilities | |
| #define | TIME_S2I(secs) |
| Seconds to time interval. | |
| #define | TIME_MS2I(msecs) |
| Milliseconds to time interval. | |
| #define | TIME_US2I(usecs) |
| Microseconds to time interval. | |
| #define | TIME_I2S(interval) |
| Time interval to seconds. | |
| #define | TIME_I2MS(interval) |
| Time interval to milliseconds. | |
| #define | TIME_I2US(interval) |
| Time interval to microseconds. | |
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. | |
Macro Functions | |
| #define | chSysGetRealtimeCounterX() |
| Returns the current value of the system real time counter. | |
| #define | chSysDisable() |
| Raises the system interrupt priority mask to the maximum level. | |
| #define | chSysSuspend() |
| Raises the system interrupt priority mask to system level. | |
| #define | chSysEnable() |
| Lowers the system interrupt priority mask to user level. | |
| #define | chSysLock() |
| Enters the kernel lock state. | |
| #define | chSysUnlock() |
| Leaves the kernel lock state. | |
| #define | chSysLockFromISR() |
| Enters the kernel lock state from within an interrupt handler. | |
| #define | chSysUnlockFromISR() |
| Leaves the kernel lock state from within an interrupt handler. | |
| #define | chSchGoSleepS(newstate) |
| Puts the current thread to sleep into the specified state. | |
| #define | chSchWakeupS(ntp, msg) |
| Wakes up a thread. | |
| #define | chSchIsRescRequiredI() |
| Evaluates if a reschedule is required. | |
| #define | chThdGetSelfX() |
Returns a pointer to the current thread_t. | |
| #define | chThdGetPriorityX(void) |
| Returns the current thread priority. | |
| #define | chThdResumeS(trp, msg) |
| Wakes up a thread waiting on a thread reference object. | |
| #define | chThdSleepSeconds(secs) |
| Delays the invoking thread for the specified number of seconds. | |
| #define | chThdSleepMilliseconds(msecs) |
| Delays the invoking thread for the specified number of milliseconds. | |
| #define | chThdSleepMicroseconds(usecs) |
| Delays the invoking thread for the specified number of microseconds. | |
| #define | chThdSleepS(timeout) |
| Suspends the invoking thread for the specified time. | |
| #define | chThdSleepUntilS(abstime) |
| Suspends the invoking thread until the system time arrives to the specified value. | |
| #define | chThdQueueObjectInit(tqp) |
| Initializes a threads queue object. | |
| #define | chThdQueueIsEmptyI(tqp) |
Evaluates to true if the specified queue is empty. | |
| #define | chVTGetSystemTimeX() |
| Current system time. | |
| #define | chVTTimeElapsedSinceX(start) |
| Returns the elapsed time since the specified start time. | |
| #define | chVTIsSystemTimeWithinX(start, end) |
| Checks if the current system time is within the specified time window. | |
| #define | chTimeAddX(systime, interval) |
| Adds an interval to a system time returning a system time. | |
| #define | chTimeDiffX(start, end) |
| Subtracts two system times returning an interval. | |
| #define | chDbgCheck(c) |
| Function parameters check. | |
| #define | chDbgAssert(c, r) |
| Condition assertion. | |
Data Structures | |
| struct | nil_threads_queue |
| Structure representing a queue of threads. More... | |
| struct | nil_thread_descriptor |
| Structure representing a thread descriptor. More... | |
| struct | nil_thread |
| Structure representing a thread. More... | |
| struct | nil_os_instance |
| System data structure. More... | |
Macros | |
| #define | __dbg_check_disable() |
| #define | __dbg_check_suspend() |
| #define | __dbg_check_enable() |
| #define | __dbg_check_lock() |
| #define | __dbg_check_unlock() |
| #define | __dbg_check_lock_from_isr() |
| #define | __dbg_check_unlock_from_isr() |
| #define | __dbg_check_enter_isr() |
| #define | __dbg_check_leave_isr() |
| #define | chDbgCheckClassI() |
| #define | chDbgCheckClassS() |
| #define | __CHIBIOS_NIL__ |
| ChibiOS/NIL identification macro. | |
| #define | CH_KERNEL_STABLE 1 |
| Stable release flag. | |
| #define | CH_CFG_ST_TIMEDELTA 0 |
| #define | CH_CFG_USE_MESSAGES FALSE |
| #define | NIL_DBG_ENABLED TRUE |
| #define | THD_IDLE_BASE (&__main_thread_stack_base__) |
| #define | THD_IDLE_END (&__main_thread_stack_end__) |
| #define | CH_PORT_SUPPORTS_RECURSIVE_LOCKS FALSE |
| #define | __dbg_enter_lock() |
| #define | __dbg_enter_lock() |
| #define | __dbg_leave_lock() |
| #define | __dbg_leave_lock() |
| #define | __CH_STRINGIFY(a) |
| Utility to make the parameter a quoted string. | |
| #define | THD_WORKING_AREA_END(wa) |
| Returns the top address of a working area. | |
Typedefs | |
| typedef uint32_t | systime_t |
| Type of system time. | |
| typedef uint32_t | sysinterval_t |
| Type of time interval. | |
| typedef uint64_t | time_conv_t |
| Type of time conversion variable. | |
| typedef struct nil_os_instance | os_instance_t |
| Type of a structure representing the system. | |
| typedef void(* | tfunc_t) (void *p) |
| Thread function. | |
| typedef struct nil_thread_descriptor | thread_descriptor_t |
| Type of a thread descriptor. | |
| typedef struct nil_thread | thread_t |
| Type of a structure representing a thread. | |
| typedef thread_t * | thread_reference_t |
| Type of a thread reference. | |
| typedef struct nil_threads_queue | threads_queue_t |
| Type of a queue of threads. | |
| typedef threads_queue_t | semaphore_t |
| Type of a structure representing a semaphore. | |
Functions | |
| thread_t * | nil_find_thread (tstate_t state, void *p) |
| Retrieves the highest priority thread in the specified state and associated to the specified object. | |
| cnt_t | nil_ready_all (void *p, cnt_t cnt, msg_t msg) |
| Puts in ready state all thread matching the specified status and associated object. | |
| void | __dbg_check_disable (void) |
Guard code for chSysDisable(). | |
| void | __dbg_check_suspend (void) |
Guard code for chSysSuspend(). | |
| void | __dbg_check_enable (void) |
Guard code for chSysEnable(). | |
| void | __dbg_check_lock (void) |
Guard code for chSysLock(). | |
| void | __dbg_check_unlock (void) |
Guard code for chSysUnlock(). | |
| void | __dbg_check_lock_from_isr (void) |
Guard code for chSysLockFromIsr(). | |
| void | __dbg_check_unlock_from_isr (void) |
Guard code for chSysUnlockFromIsr(). | |
| void | __dbg_check_enter_isr (void) |
Guard code for CH_IRQ_PROLOGUE(). | |
| void | __dbg_check_leave_isr (void) |
Guard code for CH_IRQ_EPILOGUE(). | |
| void | chDbgCheckClassI (void) |
| I-class functions context check. | |
| void | chDbgCheckClassS (void) |
| S-class functions context check. | |
| void | chSysInit (void) |
| Initializes the kernel. | |
| void | chSysHalt (const char *reason) |
| Halts the system. | |
| void | chSysTimerHandlerI (void) |
| Time management handler. | |
| void | chSysUnconditionalLock (void) |
| Unconditionally enters the kernel lock state. | |
| void | chSysUnconditionalUnlock (void) |
| Unconditionally leaves the kernel lock state. | |
| syssts_t | chSysGetStatusAndLockX (void) |
| Returns the execution status and enters a critical zone. | |
| void | chSysRestoreStatusX (syssts_t sts) |
| Restores the specified execution status and leaves a critical zone. | |
| bool | chSysIsCounterWithinX (rtcnt_t cnt, rtcnt_t start, rtcnt_t end) |
| Realtime window test. | |
| void | chSysPolledDelayX (rtcnt_t cycles) |
| Polled delay. | |
| thread_t * | chSchReadyI (thread_t *tp, msg_t msg) |
| Makes the specified thread ready for execution. | |
| bool | chSchIsPreemptionRequired (void) |
| Evaluates if preemption is required. | |
| void | chSchDoPreemption (void) |
| Switches to the first thread on the runnable queue. | |
| void | chSchRescheduleS (void) |
| Reschedules if needed. | |
| msg_t | chSchGoSleepTimeoutS (tstate_t newstate, sysinterval_t timeout) |
| Puts the current thread to sleep into the specified state with timeout specification. | |
| bool | chTimeIsInRangeX (systime_t time, systime_t start, systime_t end) |
| Checks if the specified time is within the specified time range. | |
| thread_t * | chThdCreateI (const thread_descriptor_t *tdp) |
| Creates a new thread into a static memory area. | |
| thread_t * | chThdCreate (const thread_descriptor_t *tdp) |
| Creates a new thread into a static memory area. | |
| void | chThdExit (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. | |
| 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 | chThdResume (thread_reference_t *trp, msg_t msg) |
| Wakes up a thread waiting on a thread reference object. | |
| void | chThdSleep (sysinterval_t timeout) |
| Suspends the invoking thread for the specified time. | |
| void | chThdSleepUntil (systime_t abstime) |
| Suspends the invoking thread until the system time arrives to the specified value. | |
| msg_t | chThdEnqueueTimeoutS (threads_queue_t *tqp, sysinterval_t timeout) |
| Enqueues the caller thread on a threads queue object. | |
| void | chThdDoDequeueNextI (threads_queue_t *tqp, msg_t msg) |
| Dequeues and wakes up one thread from the 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. | |
Variables | |
| os_instance_t | nil |
| System data structures. | |
| void __dbg_check_disable | ( | ) |
Definition at line 1370 of file nil/include/ch.h.
| void __dbg_check_suspend | ( | ) |
Definition at line 1371 of file nil/include/ch.h.
| void __dbg_check_enable | ( | ) |
Definition at line 1372 of file nil/include/ch.h.
| void __dbg_check_lock | ( | ) |
Definition at line 1373 of file nil/include/ch.h.
| void __dbg_check_unlock | ( | ) |
Definition at line 1374 of file nil/include/ch.h.
| void __dbg_check_lock_from_isr | ( | ) |
Definition at line 1375 of file nil/include/ch.h.
| void __dbg_check_unlock_from_isr | ( | ) |
Definition at line 1376 of file nil/include/ch.h.
| void __dbg_check_enter_isr | ( | ) |
Definition at line 1377 of file nil/include/ch.h.
| void __dbg_check_leave_isr | ( | ) |
Definition at line 1378 of file nil/include/ch.h.
| void chDbgCheckClassI | ( | ) |
Definition at line 1379 of file nil/include/ch.h.
| void chDbgCheckClassS | ( | ) |
Definition at line 1380 of file nil/include/ch.h.
| #define __CHIBIOS_NIL__ |
ChibiOS/NIL identification macro.
Definition at line 42 of file nil/include/ch.h.
| #define CH_KERNEL_STABLE 1 |
Stable release flag.
Definition at line 47 of file nil/include/ch.h.
| #define CH_KERNEL_VERSION "4.1.3" |
Kernel version string.
Definition at line 56 of file nil/include/ch.h.
| #define CH_KERNEL_MAJOR 4 |
Kernel version major number.
Definition at line 61 of file nil/include/ch.h.
| #define CH_KERNEL_MINOR 1 |
Kernel version minor number.
Definition at line 66 of file nil/include/ch.h.
| #define CH_KERNEL_PATCH 3 |
Kernel version patch number.
Definition at line 71 of file nil/include/ch.h.
| #define FALSE 0 |
Generic 'false' preprocessor boolean constant.
Definition at line 83 of file nil/include/ch.h.
| #define TRUE 1 |
Generic 'true' preprocessor boolean constant.
Definition at line 91 of file nil/include/ch.h.
| #define MSG_OK (msg_t)0 |
OK wakeup message.
Definition at line 99 of file nil/include/ch.h.
| #define MSG_TIMEOUT (msg_t)-1 |
Wake-up caused by a timeout condition.
Definition at line 100 of file nil/include/ch.h.
| #define MSG_RESET (msg_t)-2 |
Wake-up caused by a reset condition.
Definition at line 102 of file nil/include/ch.h.
| #define TIME_IMMEDIATE ((sysinterval_t)-1) |
Zero time specification for some functions with a timeout specification.
TIME_IMMEDIATE as timeout parameter, see the specific function documentation. Definition at line 116 of file nil/include/ch.h.
| #define TIME_INFINITE ((sysinterval_t)0) |
Infinite time specification for all functions with a timeout specification.
Definition at line 122 of file nil/include/ch.h.
| #define TIME_MAX_INTERVAL ((sysinterval_t)-2) |
Maximum interval constant usable as timeout.
Definition at line 127 of file nil/include/ch.h.
| #define TIME_MAX_SYSTIME ((systime_t)-1) |
Maximum system of system time before it wraps.
Definition at line 132 of file nil/include/ch.h.
| #define NIL_STATE_WTSTART (tstate_t)0 |
Thread not yet started or terminated.
Definition at line 139 of file nil/include/ch.h.
| #define NIL_STATE_READY (tstate_t)1 |
Thread ready or executing.
Definition at line 141 of file nil/include/ch.h.
Referenced by chSchReadyI(), and chSysInit().
| #define NIL_STATE_SLEEPING (tstate_t)2 |
Thread sleeping.
Definition at line 143 of file nil/include/ch.h.
| #define NIL_STATE_SUSPENDED (tstate_t)3 |
Thread suspended.
Definition at line 144 of file nil/include/ch.h.
Referenced by chThdSuspendTimeoutS().
| #define NIL_STATE_WTEXIT (tstate_t)4 |
Waiting a thread.
Definition at line 145 of file nil/include/ch.h.
Referenced by chThdExit(), and chThdWait().
| #define NIL_STATE_WTQUEUE (tstate_t)5 |
On queue or semaph.
Definition at line 146 of file nil/include/ch.h.
Referenced by chSemSignalI(), chSemWaitTimeoutS(), chThdDoDequeueNextI(), chThdEnqueueTimeoutS(), and nil_ready_all().
| #define NIL_STATE_WTOREVT (tstate_t)6 |
Waiting for events.
Definition at line 147 of file nil/include/ch.h.
Referenced by chEvtWaitAnyTimeout(), and chEvtWaitOneTimeout().
| #define NIL_STATE_WTANDEVT (tstate_t)7 |
Waiting for events.
Definition at line 148 of file nil/include/ch.h.
Referenced by chEvtWaitAllTimeout().
| #define NIL_STATE_SNDMSGQ (tstate_t)8 |
Sending a message, in queue.
Definition at line 149 of file nil/include/ch.h.
Referenced by chMsgRelease(), chMsgSend(), and chMsgWaitTimeoutS().
| #define NIL_STATE_WTMSG (tstate_t)1 |
Waiting for a message.
Definition at line 151 of file nil/include/ch.h.
Referenced by chMsgWaitTimeoutS().
| #define NIL_STATE_FINAL (tstate_t)1 |
| #define NIL_THD_IS_WTSTART | ( | tp | ) |
Definition at line 155 of file nil/include/ch.h.
Referenced by chThdCreateI().
| #define NIL_THD_IS_READY | ( | tp | ) |
Definition at line 156 of file nil/include/ch.h.
Referenced by chSchGoSleepTimeoutS(), chSchReadyI(), and chSysTimerHandlerI().
| #define NIL_THD_IS_SLEEPING | ( | tp | ) |
Definition at line 157 of file nil/include/ch.h.
| #define NIL_THD_IS_SUSPENDED | ( | tp | ) |
Definition at line 158 of file nil/include/ch.h.
Referenced by chSysTimerHandlerI(), and chThdResumeI().
| #define NIL_THD_IS_WTEXIT | ( | tp | ) |
Definition at line 159 of file nil/include/ch.h.
| #define NIL_THD_IS_WTQUEUE | ( | tp | ) |
Definition at line 160 of file nil/include/ch.h.
Referenced by chSysTimerHandlerI().
| #define NIL_THD_IS_WTOREVT | ( | tp | ) |
Definition at line 161 of file nil/include/ch.h.
Referenced by chEvtSignalI().
| #define NIL_THD_IS_WTANDEVT | ( | tp | ) |
Definition at line 162 of file nil/include/ch.h.
Referenced by chEvtSignalI().
| #define NIL_THD_IS_SNDMSGQ | ( | tp | ) |
Definition at line 163 of file nil/include/ch.h.
| #define NIL_THD_IS_WTMSG | ( | tp | ) |
Definition at line 164 of file nil/include/ch.h.
Referenced by chMsgSend().
| #define NIL_THD_IS_FINAL | ( | tp | ) |
Definition at line 165 of file nil/include/ch.h.
Referenced by chThdCreateI(), and chThdWait().
| #define CH_STATE_NAMES |
Definition at line 167 of file nil/include/ch.h.
| #define CH_CFG_USE_REGISTRY FALSE |
Definition at line 176 of file nil/include/ch.h.
| #define CH_CFG_ST_TIMEDELTA 0 |
Definition at line 312 of file nil/include/ch.h.
| #define CH_CFG_USE_MESSAGES FALSE |
Definition at line 316 of file nil/include/ch.h.
| #define NIL_DBG_ENABLED TRUE |
Definition at line 362 of file nil/include/ch.h.
| #define THD_IDLE_BASE (&__main_thread_stack_base__) |
Boundaries of the idle thread boundaries, only required if stack checking is enabled.
Definition at line 370 of file nil/include/ch.h.
Referenced by chSysInit().
| #define THD_IDLE_END (&__main_thread_stack_end__) |
Definition at line 371 of file nil/include/ch.h.
| #define CH_PORT_SUPPORTS_RECURSIVE_LOCKS FALSE |
Definition at line 381 of file nil/include/ch.h.
| #define __dbg_enter_lock | ( | ) |
Definition at line 618 of file nil/include/ch.h.
Referenced by __dbg_check_lock(), and __dbg_check_lock_from_isr().
| #define __dbg_enter_lock | ( | ) |
Definition at line 618 of file nil/include/ch.h.
| #define __dbg_leave_lock | ( | ) |
Definition at line 619 of file nil/include/ch.h.
Referenced by __dbg_check_unlock(), and __dbg_check_unlock_from_isr().
| #define __dbg_leave_lock | ( | ) |
Definition at line 619 of file nil/include/ch.h.
| #define __CH_STRINGIFY | ( | a | ) |
Utility to make the parameter a quoted string.
Definition at line 625 of file nil/include/ch.h.
| #define THD_TABLE_BEGIN const thread_descriptor_t nil_thd_configs[] = { |
Start of user threads table.
Definition at line 634 of file nil/include/ch.h.
| #define THD_TABLE_THREAD | ( | _prio, | |
| _name, | |||
| _wap, | |||
| _funcp, | |||
| _arg ) |
Entry of user threads table.
Definition at line 640 of file nil/include/ch.h.
| #define THD_TABLE_END |
End of user threads table.
Definition at line 653 of file nil/include/ch.h.
| #define MEM_ALIGN_MASK | ( | a | ) |
Alignment mask constant.
| [in] | a | alignment, must be a power of two |
Definition at line 674 of file nil/include/ch.h.
| #define MEM_ALIGN_PREV | ( | p, | |
| a ) |
Aligns to the previous aligned memory address.
| [in] | p | variable to be aligned |
| [in] | a | alignment, must be a power of two |
Definition at line 682 of file nil/include/ch.h.
| #define MEM_ALIGN_NEXT | ( | p, | |
| a ) |
Aligns to the new aligned memory address.
| [in] | p | variable to be aligned |
| [in] | a | alignment, must be a power of two |
Definition at line 690 of file nil/include/ch.h.
| #define MEM_IS_ALIGNED | ( | p, | |
| a ) |
Returns whatever a pointer or memory size is aligned.
| [in] | p | variable to be aligned |
| [in] | a | alignment, must be a power of two |
Definition at line 699 of file nil/include/ch.h.
| #define MEM_IS_VALID_ALIGNMENT | ( | a | ) |
Returns whatever a constant is a valid alignment.
Valid alignments are powers of two.
| [in] | a | alignment to be checked, must be a constant |
Definition at line 707 of file nil/include/ch.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 723 of file nil/include/ch.h.
| #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 736 of file nil/include/ch.h.
| #define THD_WORKING_AREA_END | ( | wa | ) |
Returns the top address of a working area.
stkalign_t. The macros is invalid for anything else.| [in] | wa | working area array |
Definition at line 748 of file nil/include/ch.h.
| #define THD_FUNCTION | ( | tname, | |
| arg ) |
Thread declaration macro.
Definition at line 760 of file nil/include/ch.h.
| #define CH_IRQ_IS_VALID_PRIORITY | ( | prio | ) |
Priority level validation macro.
This macro determines if the passed value is a valid priority level for the underlying architecture.
| [in] | prio | the priority level |
| false | if the priority is invalid or if the architecture does not support priorities. |
| true | if the priority is valid. |
Definition at line 779 of file nil/include/ch.h.
| #define CH_IRQ_IS_VALID_KERNEL_PRIORITY | ( | prio | ) |
Priority level validation macro.
This macro determines if the passed value is a valid priority level that cannot preempt the kernel critical zone.
| [in] | prio | the priority level |
| false | if the priority is invalid or if the architecture does not support priorities. |
| true | if the priority is valid. |
Definition at line 797 of file nil/include/ch.h.
| #define CH_IRQ_PROLOGUE | ( | ) |
IRQ handler enter code.
Definition at line 810 of file nil/include/ch.h.
| #define CH_IRQ_EPILOGUE | ( | ) |
IRQ handler exit code.
Definition at line 820 of file nil/include/ch.h.
| #define CH_IRQ_HANDLER | ( | id | ) |
Standard normal IRQ handler declaration.
id can be a function name or a vector number depending on the port implementation.Definition at line 831 of file nil/include/ch.h.
| #define CH_FAST_IRQ_HANDLER | ( | id | ) |
Standard fast IRQ handler declaration.
id can be a function name or a vector number depending on the port implementation. Definition at line 846 of file nil/include/ch.h.
| #define TIME_S2I | ( | secs | ) |
Seconds to time interval.
Converts from seconds to system ticks number.
| [in] | secs | number of seconds |
Definition at line 866 of file nil/include/ch.h.
| #define TIME_MS2I | ( | msecs | ) |
Milliseconds to time interval.
Converts from milliseconds to system ticks number.
| [in] | msecs | number of milliseconds |
Definition at line 882 of file nil/include/ch.h.
| #define TIME_US2I | ( | usecs | ) |
Microseconds to time interval.
Converts from microseconds to system ticks number.
| [in] | usecs | number of microseconds |
Definition at line 900 of file nil/include/ch.h.
| #define TIME_I2S | ( | interval | ) |
Time interval to seconds.
Converts from system ticks number to seconds.
| [in] | interval | interval in ticks |
Definition at line 918 of file nil/include/ch.h.
| #define TIME_I2MS | ( | interval | ) |
Time interval to milliseconds.
Converts from system ticks number to milliseconds.
| [in] | interval | interval in ticks |
Definition at line 936 of file nil/include/ch.h.
| #define TIME_I2US | ( | interval | ) |
Time interval to microseconds.
Converts from system ticks number to microseconds.
| [in] | interval | interval in ticks |
Definition at line 954 of file nil/include/ch.h.
| #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 971 of file nil/include/ch.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 980 of file nil/include/ch.h.
| #define chSysGetRealtimeCounterX | ( | ) |
Returns the current value of the system real time counter.
PORT_SUPPORTS_RT.Definition at line 999 of file nil/include/ch.h.
| #define chSysDisable | ( | void | ) |
Raises the system interrupt priority mask to the maximum level.
All the maskable interrupt sources are disabled regardless their hardware priority.
Definition at line 1010 of file nil/include/ch.h.
| #define chSysSuspend | ( | void | ) |
Raises the system interrupt priority mask to system level.
The interrupt sources that should not be able to preempt the kernel are disabled, interrupt sources with higher priority are still enabled.
chSysLock(), the chSysLock() could do more than just disable the interrupts.Definition at line 1026 of file nil/include/ch.h.
Referenced by chSysInit().
| #define chSysEnable | ( | void | ) |
Lowers the system interrupt priority mask to user level.
All the interrupt sources are enabled.
chSysUnlock(), the chSysUnlock() could do more than just enable the interrupts.Definition at line 1040 of file nil/include/ch.h.
| #define chSysLock | ( | void | ) |
Enters the kernel lock state.
Definition at line 1050 of file nil/include/ch.h.
Referenced by chBSemSignal(), chCacheGetObject(), chCacheReleaseObject(), chCondBroadcast(), chCondSignal(), chCondWait(), chCondWaitTimeout(), chCoreAllocFromBase(), chCoreAllocFromTop(), chEvtAddEvents(), chEvtBroadcastFlags(), chEvtGetAndClearEvents(), chEvtGetAndClearFlags(), chEvtRegisterMaskWithFlags(), chEvtSignal(), chEvtUnregister(), chEvtWaitAll(), chEvtWaitAllTimeout(), chEvtWaitAllTimeout(), chEvtWaitAny(), chEvtWaitAnyTimeout(), chEvtWaitAnyTimeout(), chEvtWaitOne(), chEvtWaitOneTimeout(), chGuardedPoolAllocTimeout(), chGuardedPoolFree(), chMBFetchTimeout(), chMBPostAheadTimeout(), chMBPostTimeout(), chMBReset(), chMsgPoll(), chMsgRelease(), chMsgSend(), chMsgWait(), chMsgWait(), chMsgWaitTimeout(), chMsgWaitTimeout(), chMtxLock(), chMtxTryLock(), chMtxUnlock(), chMtxUnlockAll(), chPipeReadTimeout(), chPipeReset(), chPipeWriteTimeout(), chPoolAlloc(), chPoolFree(), chRegFirstThread(), chRegNextThread(), chSemResetWithMessage(), chSemSignal(), chSemSignalWait(), chSemWait(), chSemWaitTimeout(), chSysGetStatusAndLockX(), chSysUnconditionalLock(), chThdAddRef(), chThdCreate(), chThdCreateFromHeap(), chThdCreateFromMemoryPool(), chThdCreateStatic(), chThdCreateSuspended(), chThdExit(), chThdRelease(), chThdResume(), chThdSetPriority(), chThdSleep(), chThdSleep(), chThdSleepUntil(), chThdSleepUntil(), chThdSleepUntilWindowed(), chThdStart(), chThdTerminate(), chThdWait(), chThdYield(), chTraceResume(), chTraceSuspend(), chTraceWrite(), chVTGetSystemTime(), chVTGetTimeStamp(), chVTIsArmed(), chVTReset(), chVTResetTimeStamp(), chVTSet(), chVTSetContinuous(), i2cSlaveMatchAddress(), and lru_get_last_s().
| #define chSysUnlock | ( | void | ) |
Leaves the kernel lock state.
Definition at line 1060 of file nil/include/ch.h.
Referenced by chBSemSignal(), chCacheGetObject(), chCacheReleaseObject(), chCondBroadcast(), chCondSignal(), chCondWait(), chCondWaitTimeout(), chCoreAllocFromBase(), chCoreAllocFromTop(), chEvtAddEvents(), chEvtBroadcastFlags(), chEvtGetAndClearEvents(), chEvtGetAndClearFlags(), chEvtRegisterMaskWithFlags(), chEvtSignal(), chEvtUnregister(), chEvtWaitAll(), chEvtWaitAllTimeout(), chEvtWaitAllTimeout(), chEvtWaitAny(), chEvtWaitAnyTimeout(), chEvtWaitAnyTimeout(), chEvtWaitOne(), chEvtWaitOneTimeout(), chGuardedPoolAllocTimeout(), chGuardedPoolFree(), chMBFetchTimeout(), chMBPostAheadTimeout(), chMBPostTimeout(), chMBReset(), chMsgPoll(), chMsgRelease(), chMsgSend(), chMsgWait(), chMsgWait(), chMsgWaitTimeout(), chMsgWaitTimeout(), chMtxLock(), chMtxTryLock(), chMtxUnlock(), chMtxUnlockAll(), chPipeReadTimeout(), chPipeReset(), chPipeWriteTimeout(), chPoolAlloc(), chPoolFree(), chRegFirstThread(), chRegNextThread(), chSemResetWithMessage(), chSemSignal(), chSemSignalWait(), chSemWait(), chSemWaitTimeout(), chSysInit(), chSysRestoreStatusX(), chSysUnconditionalUnlock(), chThdAddRef(), chThdCreate(), chThdCreateFromHeap(), chThdCreateFromMemoryPool(), chThdCreateStatic(), chThdCreateSuspended(), chThdRelease(), chThdResume(), chThdSetPriority(), chThdSleep(), chThdSleep(), chThdSleepUntil(), chThdSleepUntil(), chThdSleepUntilWindowed(), chThdStart(), chThdTerminate(), chThdWait(), chThdYield(), chTraceResume(), chTraceSuspend(), chTraceWrite(), chVTGetSystemTime(), chVTGetTimeStamp(), chVTIsArmed(), chVTReset(), chVTResetTimeStamp(), chVTSet(), chVTSetContinuous(), i2cSlaveMatchAddress(), and lru_get_last_s().
| #define chSysLockFromISR | ( | void | ) |
Enters the kernel lock state from within an interrupt handler.
Definition at line 1077 of file nil/include/ch.h.
Referenced by __sch_wakeup(), chSysGetStatusAndLockX(), chSysTimerHandlerI(), and chVTDoTickI().
| #define chSysUnlockFromISR | ( | void | ) |
Leaves the kernel lock state from within an interrupt handler.
Definition at line 1095 of file nil/include/ch.h.
Referenced by __sch_wakeup(), chSysRestoreStatusX(), chSysTimerHandlerI(), and chVTDoTickI().
| #define chSchGoSleepS | ( | newstate | ) |
Puts the current thread to sleep into the specified state.
| [in] | newstate | the new thread state or a semaphore pointer |
Definition at line 1108 of file nil/include/ch.h.
Referenced by chCondWaitS(), chEvtWaitAll(), chEvtWaitAny(), chEvtWaitOne(), chMsgSend(), chMsgWaitS(), chMtxLockS(), chSchGoSleepTimeoutS(), chSemSignalWait(), chSemWaitS(), chThdExitS(), chThdSuspendS(), and chThdWait().
| #define chSchWakeupS | ( | ntp, | |
| msg ) |
Wakes up a thread.
| [in] | ntp | the thread to be made ready |
| [in] | msg | the wakeup message |
Definition at line 1118 of file nil/include/ch.h.
Referenced by chCondSignal(), chMsgReleaseS(), chSemSignal(), chThdCreate(), chThdCreateFromHeap(), chThdCreateFromMemoryPool(), chThdCreateStatic(), chThdResumeS(), and chThdStart().
| #define chSchIsRescRequiredI | ( | ) |
Evaluates if a reschedule is required.
| true | if there is a thread that must go in running state immediately. |
| false | if preemption is not required. |
Definition at line 1132 of file nil/include/ch.h.
Referenced by chSchIsPreemptionRequired(), and chSchRescheduleS().
| #define chThdGetSelfX | ( | void | ) |
Returns a pointer to the current thread_t.
Definition at line 1139 of file nil/include/ch.h.
Referenced by chCondWaitS(), chCondWaitTimeoutS(), chEvtGetAndClearEventsI(), chEvtRegisterMaskWithFlags(), chEvtRegisterMaskWithFlagsI(), chEvtWaitAll(), chEvtWaitAllTimeout(), chEvtWaitAny(), chEvtWaitAnyTimeout(), chEvtWaitOne(), chEvtWaitOneTimeout(), chMsgPollS(), chMsgSend(), chMsgWaitS(), chMsgWaitTimeoutS(), chMtxGetNextMutexX(), chMtxLockS(), chMtxTryLockS(), chMtxUnlock(), chMtxUnlockAllS(), chMtxUnlockS(), chSemSignalWait(), chSemWaitS(), chSemWaitTimeoutS(), chSysTimerHandlerI(), chThdEnqueueTimeoutS(), chThdExitS(), chThdSetPriority(), chThdSuspendS(), chThdSuspendTimeoutS(), and chThdWait().
| #define chThdGetPriorityX | ( | void | ) |
Returns the current thread priority.
Definition at line 1149 of file nil/include/ch.h.
| #define chThdResumeS | ( | trp, | |
| 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 1161 of file nil/include/ch.h.
Referenced by chThdResume().
| #define chThdSleepSeconds | ( | secs | ) |
Delays the invoking thread for the specified number of seconds.
| [in] | secs | time in seconds, must be different from zero |
Definition at line 1176 of file nil/include/ch.h.
| #define chThdSleepMilliseconds | ( | msecs | ) |
Delays the invoking thread for the specified number of milliseconds.
| [in] | msecs | time in milliseconds, must be different from zero |
Definition at line 1189 of file nil/include/ch.h.
| #define chThdSleepMicroseconds | ( | usecs | ) |
Delays the invoking thread for the specified number of microseconds.
| [in] | usecs | time in microseconds, must be different from zero |
Definition at line 1202 of file nil/include/ch.h.
| #define chThdSleepS | ( | timeout | ) |
Suspends the invoking thread for the specified time.
| [in] | timeout | the delay in system ticks |
Definition at line 1211 of file nil/include/ch.h.
Referenced by chThdSleep(), chThdSleep(), chThdSleepUntil(), and chThdSleepUntilWindowed().
| #define chThdSleepUntilS | ( | abstime | ) |
Suspends the invoking thread until the system time arrives to the specified value.
| [in] | abstime | absolute system time |
Definition at line 1222 of file nil/include/ch.h.
Referenced by chThdSleepUntil().
| #define chThdQueueObjectInit | ( | tqp | ) |
Initializes a threads queue object.
| [out] | tqp | pointer to the threads queue object |
Definition at line 1233 of file nil/include/ch.h.
Referenced by chMBObjectInit().
| #define chThdQueueIsEmptyI | ( | tqp | ) |
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 1245 of file nil/include/ch.h.
| #define chVTGetSystemTimeX | ( | void | ) |
Current system time.
Returns the number of system ticks since the chSysInit() invocation.
systime_t size.Definition at line 1261 of file nil/include/ch.h.
Referenced by chSchGoSleepTimeoutS(), chThdSleepUntil(), chThdSleepUntilWindowed(), chVTDoResetI(), chVTDoTickI(), chVTGetRemainingIntervalI(), chVTGetTimersStateI(), chVTGetTimeStampI(), chVTResetTimeStampI(), trace_next(), vt_enqueue(), vt_insert_first(), and vt_set_alarm().
| #define chVTTimeElapsedSinceX | ( | start | ) |
Returns the elapsed time since the specified start time.
| [in] | start | start time |
Definition at line 1274 of file nil/include/ch.h.
| #define chVTIsSystemTimeWithinX | ( | start, | |
| end ) |
Checks if the current system time is within the specified time window.
| [in] | start | the start of the time window (inclusive) |
| [in] | end | the end of the time window (non inclusive) |
| true | current time within the specified time window. |
| false | current time not within the specified time window. |
Definition at line 1290 of file nil/include/ch.h.
| #define chTimeAddX | ( | systime, | |
| interval ) |
Adds an interval to a system time returning a system time.
| [in] | systime | base system time |
| [in] | interval | interval to be added |
Definition at line 1302 of file nil/include/ch.h.
Referenced by chSchGoSleepTimeoutS(), chSysTimerHandlerI(), chVTDoTickI(), vt_insert_first(), and vt_set_alarm().
| #define chTimeDiffX | ( | start, | |
| end ) |
Subtracts two system times returning an interval.
| [in] | start | first system time |
| [in] | end | second system time |
Definition at line 1314 of file nil/include/ch.h.
Referenced by chSysTimerHandlerI(), chThdSleepUntil(), chThdSleepUntilWindowed(), chVTDoResetI(), chVTDoTickI(), chVTGetRemainingIntervalI(), chVTGetTimersStateI(), chVTGetTimeStampI(), chVTTimeElapsedSinceX(), vt_enqueue(), vt_insert_first(), and vt_set_alarm().
| #define chDbgCheck | ( | c | ) |
Function parameters check.
If the condition check fails then the kernel panics and halts.
CH_DBG_ENABLE_CHECKS switch is specified in chconf.h else the macro does nothing.| [in] | c | the condition to be verified to be true |
Definition at line 1328 of file nil/include/ch.h.
| #define chDbgAssert | ( | c, | |
| r ) |
Condition assertion.
If the condition check fails then the kernel panics with a message and halts.
CH_DBG_ENABLE_ASSERTS switch is specified in chconf.h else the macro does nothing. | [in] | c | the condition to be verified to be true |
| [in] | r | a remark string |
Definition at line 1354 of file nil/include/ch.h.
| typedef port_rtcnt_t rtcnt_t |
Realtime counter.
Definition at line 393 of file nil/include/ch.h.
| typedef port_syssts_t syssts_t |
System status word.
Definition at line 394 of file nil/include/ch.h.
| typedef port_stkalign_t stkalign_t |
Stack alignment type.
Definition at line 395 of file nil/include/ch.h.
| typedef uint8_t tstate_t |
Thread state.
Definition at line 398 of file nil/include/ch.h.
| typedef uint32_t tprio_t |
Thread priority.
Definition at line 399 of file nil/include/ch.h.
| typedef int32_t msg_t |
Inter-thread message.
Definition at line 400 of file nil/include/ch.h.
| typedef int32_t eventid_t |
Numeric event identifier.
Definition at line 401 of file nil/include/ch.h.
| typedef uint32_t eventmask_t |
Mask of event identifiers.
Definition at line 402 of file nil/include/ch.h.
| typedef uint32_t eventflags_t |
Mask of event flags.
Definition at line 403 of file nil/include/ch.h.
| typedef int32_t cnt_t |
Generic signed counter.
Definition at line 404 of file nil/include/ch.h.
| typedef uint32_t ucnt_t |
Generic unsigned counter.
Definition at line 405 of file nil/include/ch.h.
| typedef uint32_t systime_t |
Type of system time.
Definition at line 435 of file nil/include/ch.h.
| typedef uint32_t sysinterval_t |
Type of time interval.
Definition at line 441 of file nil/include/ch.h.
| typedef uint64_t time_conv_t |
Type of time conversion variable.
Definition at line 448 of file nil/include/ch.h.
| typedef struct nil_os_instance os_instance_t |
Type of a structure representing the system.
Definition at line 459 of file nil/include/ch.h.
| typedef void(* tfunc_t) (void *p) |
Thread function.
Definition at line 464 of file nil/include/ch.h.
| typedef struct nil_thread_descriptor thread_descriptor_t |
Type of a thread descriptor.
Definition at line 469 of file nil/include/ch.h.
| typedef struct nil_thread thread_t |
Type of a structure representing a thread.
Definition at line 475 of file nil/include/ch.h.
| typedef thread_t* thread_reference_t |
Type of a thread reference.
Definition at line 480 of file nil/include/ch.h.
| typedef struct nil_threads_queue threads_queue_t |
Type of a queue of threads.
Definition at line 485 of file nil/include/ch.h.
| typedef threads_queue_t semaphore_t |
Type of a structure representing a semaphore.
Definition at line 493 of file nil/include/ch.h.
Retrieves the highest priority thread in the specified state and associated to the specified object.
| [in] | state | thread state |
| [in] | p | object pointer |
| NULL | if the thread is not found. |
Definition at line 70 of file ch.c.
References CH_CFG_MAX_THREADS, nil, and ch_thread::state.
Referenced by chMsgWaitTimeoutS(), chSemSignalI(), and chThdDoDequeueNextI().
Puts in ready state all thread matching the specified status and associated object.
| [in] | p | object pointer |
| [in] | cnt | number of threads to be readied as a negative number, non negative numbers are ignored |
| [in] | msg | the wakeup message |
Definition at line 95 of file ch.c.
References CH_CFG_MAX_THREADS, chDbgAssert, chSchReadyI(), nil, NIL_STATE_WTQUEUE, and ch_thread::state.
Referenced by chSemResetWithMessageI(), and chThdDequeueAllI().

| void __dbg_check_disable | ( | void | ) |
Guard code for chSysDisable().
Definition at line 120 of file ch.c.
References chSysHalt(), and nil.

| void __dbg_check_suspend | ( | void | ) |
Guard code for chSysSuspend().
Definition at line 132 of file ch.c.
References chSysHalt(), and nil.

| void __dbg_check_enable | ( | void | ) |
Guard code for chSysEnable().
Definition at line 144 of file ch.c.
References chSysHalt(), and nil.

| void __dbg_check_lock | ( | void | ) |
Guard code for chSysLock().
Definition at line 156 of file ch.c.
References __dbg_enter_lock, chSysHalt(), and nil.

| void __dbg_check_unlock | ( | void | ) |
Guard code for chSysUnlock().
Definition at line 169 of file ch.c.
References __dbg_leave_lock, chSysHalt(), and nil.

| void __dbg_check_lock_from_isr | ( | void | ) |
Guard code for chSysLockFromIsr().
Definition at line 182 of file ch.c.
References __dbg_enter_lock, chSysHalt(), and nil.

| void __dbg_check_unlock_from_isr | ( | void | ) |
Guard code for chSysUnlockFromIsr().
Definition at line 195 of file ch.c.
References __dbg_leave_lock, chSysHalt(), and nil.

| void __dbg_check_enter_isr | ( | void | ) |
Guard code for CH_IRQ_PROLOGUE().
Definition at line 208 of file ch.c.
References chSysHalt(), nil, port_lock_from_isr(), and port_unlock_from_isr().

| void __dbg_check_leave_isr | ( | void | ) |
Guard code for CH_IRQ_EPILOGUE().
Definition at line 223 of file ch.c.
References chSysHalt(), nil, port_lock_from_isr(), and port_unlock_from_isr().

| void chDbgCheckClassI | ( | void | ) |
I-class functions context check.
Verifies that the system is in an appropriate state for invoking an I-class API function. A panic is generated if the state is not compatible.
Definition at line 241 of file ch.c.
References chSysHalt(), and nil.
Referenced by chSchReadyI(), chSysTimerHandlerI(), chThdCreateI(), chThdDequeueAllI(), and chThdDequeueNextI().

| void chDbgCheckClassS | ( | void | ) |
S-class functions context check.
Verifies that the system is in an appropriate state for invoking an S-class API function. A panic is generated if the state is not compatible.
Definition at line 256 of file ch.c.
References chSysHalt(), and nil.
Referenced by chSchGoSleepTimeoutS(), chSchRescheduleS(), and chThdEnqueueTimeoutS().

| void chSysInit | ( | void | ) |
Initializes the kernel.
Initializes the kernel structures, the current instructions flow becomes the idle thread upon return. The idle thread must not invoke any kernel primitive able to change state to not runnable.
nil global variable has been zeroed by the runtime environment. If this is not the case then make sure to clear it before calling this function.Definition at line 275 of file ch.c.
References __oslib_init(), CH_CFG_MAX_THREADS, CH_CFG_SYSTEM_INIT_HOOK, chSchRescheduleS(), chSysSuspend, chSysUnlock, chThdCreateI(), thread_descriptor_t::funcp, nil, NIL_STATE_READY, and THD_IDLE_BASE.

| void chSysHalt | ( | const char * | reason | ) |
Halts the system.
This function is invoked by the operating system when an unrecoverable error is detected, for example because a programming error in the application code that triggers an assertion while in debug mode.
| [in] | reason | pointer to an error string |
Definition at line 330 of file ch.c.
References CH_CFG_SYSTEM_HALT_HOOK, nil, and port_disable().
Referenced by __dbg_check_disable(), __dbg_check_enable(), __dbg_check_enter_isr(), __dbg_check_leave_isr(), __dbg_check_lock(), __dbg_check_lock_from_isr(), __dbg_check_suspend(), __dbg_check_unlock(), __dbg_check_unlock_from_isr(), chDbgCheckClassI(), and chDbgCheckClassS().

| void chSysTimerHandlerI | ( | void | ) |
Time management handler.
Definition at line 355 of file ch.c.
References CH_CFG_MAX_THREADS, chDbgAssert, chDbgCheckClassI(), chSchReadyI(), chSysLockFromISR, chSysUnlockFromISR, chTimeAddX, chTimeDiffX, MSG_TIMEOUT, nil, NIL_THD_IS_READY, NIL_THD_IS_SUSPENDED, and NIL_THD_IS_WTQUEUE.

| void chSysUnconditionalLock | ( | void | ) |
Unconditionally enters the kernel lock state.
Definition at line 459 of file ch.c.
References chSysLock, port_get_lock_status, and port_is_locked.
| void chSysUnconditionalUnlock | ( | void | ) |
Unconditionally leaves the kernel lock state.
Definition at line 473 of file ch.c.
References chSysUnlock, port_get_lock_status, and port_is_locked.
| syssts_t chSysGetStatusAndLockX | ( | void | ) |
Returns the execution status and enters a critical zone.
This functions enters into a critical zone and can be called from any context. Because its flexibility it is less efficient than chSysLock() which is preferable when the calling context is known.
port_get_lock_status() and port_is_locked().Definition at line 495 of file ch.c.
References chSysLock, chSysLockFromISR, port_get_lock_status, port_is_isr_context(), and port_is_locked.

| void chSysRestoreStatusX | ( | syssts_t | sts | ) |
Restores the specified execution status and leaves a critical zone.
chSchRescheduleS() is automatically performed if exiting the critical zone and if not in ISR context. port_get_lock_status() and port_is_locked().| [in] | sts | the system status to be restored. |
Definition at line 520 of file ch.c.
References chSchRescheduleS(), chSysUnlock, chSysUnlockFromISR, port_is_isr_context(), and port_is_locked.

Realtime window test.
This function verifies if the current realtime counter value lies within the specified range or not. The test takes care of the realtime counter wrapping to zero on overflow.
PORT_SUPPORTS_RT.| [in] | cnt | the counter value to be tested |
| [in] | start | the start of the time window (inclusive) |
| [in] | end | the end of the time window (non inclusive) |
| true | current time within the specified time window. |
| false | current time not within the specified time window. |
Definition at line 553 of file ch.c.
Referenced by chSysPolledDelayX().
| void chSysPolledDelayX | ( | rtcnt_t | cycles | ) |
Polled delay.
PORT_SUPPORTS_RT.| [in] | cycles | number of cycles |
Definition at line 570 of file ch.c.
References chSysGetRealtimeCounterX, and chSysIsCounterWithinX().

Makes the specified thread ready for execution.
| [in] | tp | pointer to the thread_t object |
| [in] | msg | the wakeup message |
Definition at line 587 of file ch.c.
References CH_CFG_MAX_THREADS, chDbgAssert, chDbgCheck, chDbgCheckClassI(), nil, NIL_STATE_READY, NIL_THD_IS_READY, and ch_thread::state.
Referenced by chSysTimerHandlerI(), chThdCreateI(), chThdDoDequeueNextI(), chThdExit(), chThdResumeI(), and nil_ready_all().

| bool chSchIsPreemptionRequired | ( | void | ) |
Evaluates if preemption is required.
The decision is taken by comparing the relative priorities and depending on the state of the round robin timeout counter.
| true | if there is a thread that must go in running state immediately. |
| false | if preemption is not required. |
Definition at line 616 of file ch.c.
References chSchIsRescRequiredI.
| void chSchDoPreemption | ( | void | ) |
Switches to the first thread on the runnable queue.
Definition at line 628 of file ch.c.
References CH_CFG_IDLE_LEAVE_HOOK, CH_CFG_MAX_THREADS, nil, and port_switch.
Referenced by chSchRescheduleS().
| void chSchRescheduleS | ( | void | ) |
Reschedules if needed.
Definition at line 643 of file ch.c.
References chDbgCheckClassS(), chSchDoPreemption(), and chSchIsRescRequiredI.
Referenced by chSysInit(), chSysRestoreStatusX(), and chThdCreate().

| msg_t chSchGoSleepTimeoutS | ( | tstate_t | newstate, |
| sysinterval_t | timeout ) |
Puts the current thread to sleep into the specified state with timeout specification.
The thread goes into a sleeping state, if it is not awakened explicitly within the specified system time then it is forcibly awakened with a MSG_TIMEOUT low level message.
| [in] | newstate | the new thread state or a semaphore pointer |
| [in] | timeout | the number of ticks before the operation timeouts. the following special values are allowed:
|
| MSG_TIMEOUT | if a timeout occurred. |
Definition at line 669 of file ch.c.
References CH_CFG_IDLE_ENTER_HOOK, CH_CFG_MAX_THREADS, CH_CFG_ST_TIMEDELTA, chDbgAssert, chDbgCheckClassS(), chTimeAddX, chTimeIsInRangeX(), chVTGetSystemTimeX, nil, NIL_THD_IS_READY, port_switch, ch_thread::state, and TIME_INFINITE.
Referenced by chThdEnqueueTimeoutS(), chThdExit(), chThdSuspendTimeoutS(), and chThdWait().

Checks if the specified time is within the specified time range.
| [in] | time | the time to be verified |
| [in] | start | the start of the time window (inclusive) |
| [in] | end | the end of the time window (non inclusive) |
| true | current time within the specified time window. |
| false | current time not within the specified time window. |
Definition at line 749 of file ch.c.
Referenced by chSchGoSleepTimeoutS().
| thread_t * chThdCreateI | ( | const thread_descriptor_t * | tdp | ) |
Creates a new thread into a static memory area.
The new thread is initialized and make ready to execute.
chThdExit() or by simply returning from its main function.| [out] | tdp | pointer to the thread descriptor structure |
thread_t structure allocated for the thread.Definition at line 767 of file ch.c.
References thread_descriptor_t::arg, CH_CFG_MAX_THREADS, CH_CFG_THREAD_EXT_INIT_HOOK, chDbgAssert, chDbgCheck, chDbgCheckClassI(), chSchReadyI(), thread_descriptor_t::funcp, MEM_IS_ALIGNED, MSG_OK, nil, NIL_THD_IS_FINAL, NIL_THD_IS_WTSTART, PORT_SETUP_CONTEXT, PORT_STACK_ALIGN, PORT_WORKING_AREA_ALIGN, thread_descriptor_t::prio, ch_thread::wabase, thread_descriptor_t::wbase, and thread_descriptor_t::wend.
Referenced by chSysInit(), and chThdCreate().

| thread_t * chThdCreate | ( | const thread_descriptor_t * | tdp | ) |
Creates a new thread into a static memory area.
The new thread is initialized and make ready to execute.
chThdExit() or by simply returning from its main function.| [out] | tdp | pointer to the thread descriptor structure |
thread_t structure allocated for the thread.Definition at line 813 of file ch.c.
References chSchRescheduleS(), chSysLock, chSysUnlock, and chThdCreateI().

| 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 838 of file ch.c.
References CH_CFG_MAX_THREADS, CH_CFG_THREAD_EXIT_HOOK, chDbgAssert, chSchGoSleepTimeoutS(), chSchReadyI(), chSysLock, nil, NIL_STATE_FINAL, NIL_STATE_WTEXIT, ch_thread::state, and TIME_INFINITE.

Blocks the execution of the invoking thread until the specified thread terminates then the exit code is returned.
| [in] | tp | pointer to the thread |
Definition at line 876 of file ch.c.
References chSchGoSleepTimeoutS(), chSysLock, chSysUnlock, nil, NIL_STATE_WTEXIT, NIL_THD_IS_FINAL, and TIME_INFINITE.

| 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 number of ticks before the operation timeouts, the following special values are allowed:
|
Definition at line 907 of file ch.c.
References chDbgAssert, chSchGoSleepTimeoutS(), MSG_TIMEOUT, nil, NIL_STATE_SUSPENDED, and TIME_IMMEDIATE.

| 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 930 of file ch.c.
References chDbgAssert, chSchReadyI(), and NIL_THD_IS_SUSPENDED.

| 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 952 of file ch.c.
References chSysLock, chSysUnlock, and chThdResumeS.
| void chThdSleep | ( | sysinterval_t | timeout | ) |
Suspends the invoking thread for the specified time.
| [in] | timeout | the delay in system ticks |
Definition at line 966 of file ch.c.
References chSysLock, chSysUnlock, and chThdSleepS.
| void chThdSleepUntil | ( | systime_t | abstime | ) |
Suspends the invoking thread until the system time arrives to the specified value.
| [in] | abstime | absolute system time |
Definition at line 981 of file ch.c.
References chSysLock, chSysUnlock, and chThdSleepUntilS.
| 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 structure |
| [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 1008 of file ch.c.
References chDbgAssert, chDbgCheck, chDbgCheckClassS(), chSchGoSleepTimeoutS(), MSG_TIMEOUT, nil, NIL_STATE_WTQUEUE, and TIME_IMMEDIATE.

| void chThdDoDequeueNextI | ( | threads_queue_t * | tqp, |
| msg_t | msg ) |
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 a threads_queue_t structure |
| [in] | msg | the message code |
Definition at line 1035 of file ch.c.
References chDbgAssert, chSchReadyI(), nil_find_thread(), and NIL_STATE_WTQUEUE.
Referenced by chThdDequeueNextI().

| 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 structure |
| [in] | msg | the message code |
Definition at line 1057 of file ch.c.
References chDbgCheck, chDbgCheckClassI(), and chThdDoDequeueNextI().

| 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 structure |
| [in] | msg | the message code |
Definition at line 1075 of file ch.c.
References chDbgCheck, chDbgCheckClassI(), and nil_ready_all().

| os_instance_t nil |
System data structures.
Definition at line 41 of file ch.c.
Referenced by __dbg_check_disable(), __dbg_check_enable(), __dbg_check_enter_isr(), __dbg_check_leave_isr(), __dbg_check_lock(), __dbg_check_lock_from_isr(), __dbg_check_suspend(), __dbg_check_unlock(), __dbg_check_unlock_from_isr(), chDbgCheckClassI(), chDbgCheckClassS(), chEvtWaitAllTimeout(), chEvtWaitAnyTimeout(), chEvtWaitOneTimeout(), chMsgSend(), chMsgWaitTimeoutS(), chSchDoPreemption(), chSchGoSleepTimeoutS(), chSchReadyI(), chSemWaitTimeoutS(), chSysHalt(), chSysInit(), chSysTimerHandlerI(), chThdCreateI(), chThdEnqueueTimeoutS(), chThdExit(), chThdSuspendTimeoutS(), chThdWait(), nil_find_thread(), and nil_ready_all().