Kernel related settings and hooks.
#define _CHIBIOS_RT_CONF_ |
#define CH_CFG_CONTEXT_SWITCH_HOOK |
( |
|
ntp, |
|
|
|
otp |
|
) |
| |
Value:
Context switch hook.
This hook is invoked just before switching between threads.
Definition at line 466 of file chconf.h.
#define CH_CFG_IDLE_ENTER_HOOK |
( |
| ) |
|
Value:
Idle thread enter hook.
- Note
- This hook is invoked within a critical zone, no OS functions should be invoked from here.
-
This macro can be used to activate a power saving mode.
Definition at line 490 of file chconf.h.
#define CH_CFG_IDLE_LEAVE_HOOK |
( |
| ) |
|
Value:
Idle thread leave hook.
- Note
- This hook is invoked within a critical zone, no OS functions should be invoked from here.
-
This macro can be used to deactivate a power saving mode.
Definition at line 500 of file chconf.h.
#define CH_CFG_IDLE_LOOP_HOOK |
( |
| ) |
|
Value:
Idle Loop hook.
This hook is continuously invoked by the idle thread loop.
Definition at line 508 of file chconf.h.
#define CH_CFG_IRQ_EPILOGUE_HOOK |
( |
| ) |
|
Value:
ISR exit hook.
Definition at line 480 of file chconf.h.
#define CH_CFG_IRQ_PROLOGUE_HOOK |
( |
| ) |
|
Value:
ISR enter hook.
Definition at line 473 of file chconf.h.
#define CH_CFG_MEMCORE_SIZE 0 |
Managed RAM size.
Size of the RAM area to be managed by the OS. If set to zero then the whole available RAM is used. The core memory is made available to the heap allocator and/or can be used directly through the simplified core memory allocator.
- Note
- In order to let the OS manage the whole RAM the linker script must provide the
heap_base
and heap_end
symbols.
-
Requires
CH_CFG_USE_MEMCORE
.
Definition at line 97 of file chconf.h.
#define CH_CFG_NO_IDLE_THREAD FALSE |
Idle thread automatic spawn suppression.
When this option is activated the function chSysInit()
does not spawn the idle thread. The application main()
function becomes the idle thread and must implement an infinite loop.
Definition at line 106 of file chconf.h.
#define CH_CFG_OPTIMIZE_SPEED TRUE |
OS optimization.
If enabled then time efficient rather than space efficient code is used when two possible implementations exist.
- Note
- This is not related to the compiler optimization options.
-
The default is
TRUE
.
Definition at line 125 of file chconf.h.
#define CH_CFG_ST_FREQUENCY 10000 |
#define CH_CFG_ST_RESOLUTION 32 |
System time counter resolution.
- Note
- Allowed values are 16 or 32 bits.
Definition at line 44 of file chconf.h.
#define CH_CFG_ST_TIMEDELTA 0 |
Time delta constant for the tick-less mode.
- Note
- If this value is zero then the system uses the classic periodic tick. This value represents the minimum number of ticks that is safe to specify in a timeout directive. The value one is not valid, timeouts are rounded up to this value.
Definition at line 61 of file chconf.h.
#define CH_CFG_SYSTEM_HALT_HOOK |
( |
|
reason | ) |
|
Value:
System halt hook.
This hook is invoked in case to a system halting error before the system is halted.
Definition at line 526 of file chconf.h.
#define CH_CFG_SYSTEM_TICK_HOOK |
( |
| ) |
|
Value:
System tick event hook.
This hook is invoked in the system tick handler immediately after processing the virtual timers queue.
Definition at line 517 of file chconf.h.
#define CH_CFG_THREAD_EXIT_HOOK |
( |
|
tp | ) |
|
Value:
Threads finalization hook.
User finalization code added to the chThdExit()
API.
- Note
- It is inserted into lock zone.
-
It is also invoked when the threads simply return in order to terminate.
Definition at line 458 of file chconf.h.
#define CH_CFG_THREAD_EXTRA_FIELDS /* Add threads custom fields here.*/ |
Threads descriptor structure extension.
User fields added to the end of the thread_t
structure.
Definition at line 436 of file chconf.h.
#define CH_CFG_THREAD_INIT_HOOK |
( |
|
tp | ) |
|
Value:
Threads initialization hook.
User initialization code added to the chThdInit()
API.
- Note
- It is invoked from within
chThdInit()
and implicitly from all the threads creation APIs.
Definition at line 446 of file chconf.h.
#define CH_CFG_TIME_QUANTUM 10 |
Round robin interval.
This constant is the number of system ticks allowed for the threads before preemption occurs. Setting this value to zero disables the preemption for threads with equal priority and the round robin becomes cooperative. Note that higher priority threads can still preempt, the kernel is always preemptive.
- Note
- Disabling the round robin preemption makes the kernel more compact and generally faster.
-
The round robin preemption is not supported in tickless mode and must be set to zero in that case.
Definition at line 84 of file chconf.h.
#define CH_CFG_TRACE_HOOK |
( |
|
tep | ) |
|
Value:
Trace hook.
This hook is invoked each time a new record is written in the trace buffer.
Definition at line 535 of file chconf.h.
#define CH_CFG_USE_CONDVARS TRUE |
Conditional Variables APIs.
If enabled then the conditional variables APIs are included in the kernel.
- Note
- The default is
TRUE
.
-
Requires
CH_CFG_USE_MUTEXES
.
Definition at line 207 of file chconf.h.
#define CH_CFG_USE_CONDVARS_TIMEOUT TRUE |
Conditional Variables APIs with timeout.
If enabled then the conditional variables APIs with timeout specification are included in the kernel.
- Note
- The default is
TRUE
.
-
Requires
CH_CFG_USE_CONDVARS
.
Definition at line 217 of file chconf.h.
#define CH_CFG_USE_DYNAMIC TRUE |
Dynamic Threads APIs.
If enabled then the dynamic threads creation APIs are included in the kernel.
- Note
- The default is
TRUE
.
-
Requires
CH_CFG_USE_WAITEXIT
.
-
Requires
CH_CFG_USE_HEAP
and/or CH_CFG_USE_MEMPOOLS
.
Definition at line 314 of file chconf.h.
#define CH_CFG_USE_EVENTS TRUE |
Events Flags APIs.
If enabled then the event flags APIs are included in the kernel.
- Note
- The default is
TRUE
.
Definition at line 225 of file chconf.h.
#define CH_CFG_USE_EVENTS_TIMEOUT TRUE |
Events Flags APIs with timeout.
If enabled then the events APIs with timeout specification are included in the kernel.
- Note
- The default is
TRUE
.
-
Requires
CH_CFG_USE_EVENTS
.
Definition at line 235 of file chconf.h.
#define CH_CFG_USE_HEAP TRUE |
Heap Allocator APIs.
If enabled then the memory heap allocator APIs are included in the kernel.
- Note
- The default is
TRUE
.
-
Requires
CH_CFG_USE_MEMCORE
and either CH_CFG_USE_MUTEXES
or CH_CFG_USE_SEMAPHORES
.
-
Mutexes are recommended.
Definition at line 294 of file chconf.h.
#define CH_CFG_USE_MAILBOXES TRUE |
Mailboxes APIs.
If enabled then the asynchronous messages (mailboxes) APIs are included in the kernel.
- Note
- The default is
TRUE
.
-
Requires
CH_CFG_USE_SEMAPHORES
.
Definition at line 265 of file chconf.h.
#define CH_CFG_USE_MEMCORE TRUE |
Core Memory Manager APIs.
If enabled then the core memory manager APIs are included in the kernel.
- Note
- The default is
TRUE
.
Definition at line 282 of file chconf.h.
#define CH_CFG_USE_MEMPOOLS TRUE |
Memory Pools Allocator APIs.
If enabled then the memory pools allocator APIs are included in the kernel.
- Note
- The default is
TRUE
.
Definition at line 303 of file chconf.h.
#define CH_CFG_USE_MESSAGES TRUE |
Synchronous Messages APIs.
If enabled then the synchronous messages APIs are included in the kernel.
- Note
- The default is
TRUE
.
Definition at line 244 of file chconf.h.
#define CH_CFG_USE_MESSAGES_PRIORITY FALSE |
Synchronous Messages queuing mode.
If enabled then messages are served by priority rather than in FIFO order.
- Note
- The default is
FALSE
. Enable this if you have special requirements.
-
Requires
CH_CFG_USE_MESSAGES
.
Definition at line 255 of file chconf.h.
#define CH_CFG_USE_MUTEXES TRUE |
Mutexes APIs.
If enabled then the mutexes APIs are included in the kernel.
- Note
- The default is
TRUE
.
Definition at line 187 of file chconf.h.
#define CH_CFG_USE_MUTEXES_RECURSIVE FALSE |
Enables recursive behavior on mutexes.
- Note
- Recursive mutexes are heavier and have an increased memory footprint.
-
The default is
FALSE
.
-
Requires
CH_CFG_USE_MUTEXES
.
Definition at line 197 of file chconf.h.
#define CH_CFG_USE_QUEUES TRUE |
I/O Queues APIs.
If enabled then the I/O queues APIs are included in the kernel.
- Note
- The default is
TRUE
.
Definition at line 273 of file chconf.h.
#define CH_CFG_USE_REGISTRY TRUE |
Threads registry APIs.
If enabled then the registry APIs are included in the kernel.
- Note
- The default is
TRUE
.
Definition at line 151 of file chconf.h.
#define CH_CFG_USE_SEMAPHORES TRUE |
Semaphores APIs.
If enabled then the Semaphores APIs are included in the kernel.
- Note
- The default is
TRUE
.
Definition at line 168 of file chconf.h.
#define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE |
Semaphores queuing mode.
If enabled then the threads are enqueued on semaphores by priority rather than in FIFO order.
- Note
- The default is
FALSE
. Enable this if you have special requirements.
-
Requires
CH_CFG_USE_SEMAPHORES
.
Definition at line 179 of file chconf.h.
#define CH_CFG_USE_TM TRUE |
Time Measurement APIs.
If enabled then the time measurement APIs are included in the kernel.
- Note
- The default is
TRUE
.
Definition at line 143 of file chconf.h.
#define CH_CFG_USE_WAITEXIT TRUE |
Threads synchronization APIs.
If enabled then the chThdWait()
function is included in the kernel.
- Note
- The default is
TRUE
.
Definition at line 160 of file chconf.h.
#define CH_DBG_ENABLE_ASSERTS FALSE |
Debug option, consistency checks.
If enabled then all the assertions in the kernel code are activated. This includes consistency checks inside the kernel, runtime anomalies and port-defined checks.
- Note
- The default is
FALSE
.
Definition at line 365 of file chconf.h.
#define CH_DBG_ENABLE_CHECKS FALSE |
Debug option, parameters checks.
If enabled then the checks on the API functions input parameters are activated.
- Note
- The default is
FALSE
.
Definition at line 353 of file chconf.h.
#define CH_DBG_ENABLE_STACK_CHECK FALSE |
Debug option, stack checks.
If enabled then a runtime stack check is performed.
- Note
- The default is
FALSE
.
-
The stack check is performed in a architecture/port dependent way. It may not be implemented or some ports.
-
The default failure mode is to halt the system with the global
panic_msg
variable set to NULL
.
Definition at line 395 of file chconf.h.
#define CH_DBG_FILL_THREADS FALSE |
Debug option, stacks initialization.
If enabled then the threads working area is filled with a byte value when a thread is created. This can be useful for the runtime measurement of the used stack.
- Note
- The default is
FALSE
.
Definition at line 407 of file chconf.h.
#define CH_DBG_STATISTICS FALSE |
Debug option, kernel statistics.
- Note
- The default is
FALSE
.
Definition at line 331 of file chconf.h.
#define CH_DBG_SYSTEM_STATE_CHECK FALSE |
Debug option, system state check.
If enabled the correct call protocol for system APIs is checked at runtime.
- Note
- The default is
FALSE
.
Definition at line 342 of file chconf.h.
#define CH_DBG_THREADS_PROFILING FALSE |
Debug option, threads profiling.
If enabled then a field is added to the thread_t
structure that counts the system ticks occurred while executing the thread.
- Note
- The default is
FALSE
.
-
This debug option is not currently compatible with the tickless mode.
Definition at line 420 of file chconf.h.
#define CH_DBG_TRACE_BUFFER_SIZE 128 |
Trace buffer entries.
- Note
- The trace buffer is only allocated if
CH_DBG_TRACE_MASK
is different from CH_DBG_TRACE_MASK_DISABLED
.
Definition at line 382 of file chconf.h.
#define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED |
Debug option, trace buffer.
If enabled then the context switch circular trace buffer is activated.
- Note
- The default is
CH_DBG_TRACE_MASK_DISABLED
.
Definition at line 375 of file chconf.h.
#define CHPRINTF_USE_FLOAT 1 |
#define CORTEX_VTOR_INIT 0x08000000U |