CMSIS-RTOS2
Version 2.1.0
Real-Time Operating System: API and RTX Reference Implementation
|
Provide version/system information and start the RTOS Kernel. More...
Data Structures | |
struct | osVersion_t |
Version information. More... | |
Enumerations | |
enum | osKernelState_t { osKernelInactive = 0, osKernelReady = 1, osKernelRunning = 2, osKernelLocked = 3, osKernelSuspended = 4, osKernelError = -1, osKernelReserved = 0x7FFFFFFFU } |
Kernel state. More... | |
Functions | |
osStatus_t | osKernelInitialize (void) |
Initialize the RTOS Kernel. More... | |
osStatus_t | osKernelGetInfo (osVersion_t *version, char *id_buf, uint32_t id_size) |
Get RTOS Kernel Information. More... | |
osKernelState_t | osKernelGetState (void) |
Get the current RTOS Kernel state. More... | |
osStatus_t | osKernelStart (void) |
Start the RTOS Kernel scheduler. More... | |
int32_t | osKernelLock (void) |
Lock the RTOS Kernel scheduler. More... | |
int32_t | osKernelUnlock (void) |
Unlock the RTOS Kernel scheduler. More... | |
int32_t | osKernelRestoreLock (int32_t lock) |
Restore the RTOS Kernel scheduler lock state. More... | |
uint32_t | osKernelSuspend (void) |
Suspend the RTOS Kernel scheduler. More... | |
void | osKernelResume (uint32_t sleep_ticks) |
Resume the RTOS Kernel scheduler. More... | |
uint64_t | osKernelGetTickCount (void) |
Get the RTOS kernel tick count. More... | |
uint32_t | osKernelGetTickFreq (void) |
Get the RTOS kernel tick frequency. More... | |
uint32_t | osKernelGetSysTimerCount (void) |
Get the RTOS kernel system timer count. More... | |
uint32_t | osKernelGetSysTimerFreq (void) |
Get the RTOS kernel system timer frequency. More... | |
The kernel Information and Control function group allows to:
Code Example
struct osVersion_t |
Identifies the underlying RTOS kernel and API version number. The version is represented in a combined decimal number in the format: major.minor.rev: mmnnnrrrr
Use osKernelGetInfo to retrieve the version numbers.
Data Fields | ||
---|---|---|
uint32_t | api | API version (major.minor.rev: mmnnnrrrr dec). |
uint32_t | kernel | Kernel version (major.minor.rev: mmnnnrrrr dec). |
enum osKernelState_t |
State of the kernel as retrieved by osKernelGetState. In case osKernelGetState fails or if it is called from an ISR, it will return osKernelError
, otherwise it returns the kernel state.
Enumerator | |
---|---|
osKernelInactive |
Inactive. The kernel is not ready yet. osKernelInitialize needs to be executed successfully. |
osKernelReady |
Ready. The kernel is not yet running. osKernelStart transfers the kernel to the running state. |
osKernelRunning |
Running. The kernel is initialized and running. |
osKernelLocked |
Locked. The kernel was locked with osKernelLock. The functions osKernelUnlock or osKernelRestoreLock unlocks it. |
osKernelSuspended |
Suspended. The kernel was suspended using osKernelSuspend. The function osKernelResume returns to normal operation. |
osKernelError |
Error. An error occurred. |
osKernelReserved |
Prevents enum down-size compiler optimization. Reserved. |
osStatus_t osKernelInitialize | ( | void | ) |
The function osKernelInitialize initializes the RTOS Kernel. Before it is successfully executed, no RTOS function may be called.
Possible osStatus_t return values:
Code Example
osStatus_t osKernelGetInfo | ( | osVersion_t * | version, |
char * | id_buf, | ||
uint32_t | id_size | ||
) |
[out] | version | pointer to buffer for retrieving version information. |
[out] | id_buf | pointer to buffer for retrieving kernel identification string. |
[in] | id_size | size of buffer for kernel identification string. |
The function osKernelGetInfo retrieves the API and kernel version of the underlying RTOS kernel and a human readable identifier string for the kernel.
Possible osStatus_t return values:
Code Example
osKernelState_t osKernelGetState | ( | void | ) |
The function osKernelGetState returns the current state of the kernel and can be safely called before the RTOS is initialized. In case it fails or if it is called from an ISR, it will return osKernelError
, otherwise it returns the kernel state (refer to osKernelState_t for the list of kernel states).
Possible osKernelState_t return values:
Code Example
osStatus_t osKernelStart | ( | void | ) |
The function osKernelStart starts the RTOS kernel and begins thread switching. It will not return to its calling function in case of success.
Possible osStatus_t return values:
Code Example
int32_t osKernelLock | ( | void | ) |
The function osKernelLock allows to lock all task switches. It returns the previous value of the lock state (1 if it was locked, 0 if it was unlocked), or a negative number representing an error code otherwise (refer to osStatus_t).
Code Example
int32_t osKernelUnlock | ( | void | ) |
The function osKernelUnlock resumes from osKernelLock. It returns the previous value of the lock state (1 if it was locked, 0 if it was unlocked), or a negative number representing an error code otherwise (refer to osStatus_t).
Code Example
int32_t osKernelRestoreLock | ( | int32_t | lock | ) |
[in] | lock | lock state obtained by osKernelLock or osKernelUnlock. |
The function osKernelRestoreLock restores the previous lock state after osKernelLock or osKernelUnlock.
The argument lock specifies the lock state as obtained by osKernelLock or osKernelUnlock.
The function returns the new value of the lock state (1 if it was locked, 0 if it was unlocked), or a negative number representing an error code otherwise (refer to osStatus_t).
Code Example
uint32_t osKernelSuspend | ( | void | ) |
CMSIS-RTOS provides extension for tick-less operation which is useful for applications that use extensively low-power modes where the SysTick timer is also disabled. To provide a time-tick in such power-saving modes a wake-up timer is used to derive timer intervals. The function osKernelSuspend suspends the RTX kernel scheduler and thus enables sleep modes.
Code Example
void osKernelResume | ( | uint32_t | sleep_ticks | ) |
[in] | sleep_ticks | time in ticks for how long the system was in sleep or power-down mode. |
CMSIS-RTOS provides extension for tick-less operation which is useful for applications that use extensively low-power modes where the SysTick timer is also disabled. To provide a time-tick in such power-saving modes a wake-up timer is used to derive timer intervals. The function osKernelResume enables the RTX kernel scheduler and thus wakes up the system from sleep mode.
Code Example
uint64_t osKernelGetTickCount | ( | void | ) |
The function osKernelGetTickCount returns the current RTOS kernel tick count or 0 in case of a failure.
uint32_t osKernelGetTickFreq | ( | void | ) |
The function osKernelGetTickFreq returns the frequency of the current RTOS kernel tick or 0 in case of a failure.
uint32_t osKernelGetSysTimerCount | ( | void | ) |
The function osKernelGetSysTimerCount returns the current RTOS kernel system timer as a 32-bit value or 0 in case of a failure.
uint32_t osKernelGetSysTimerFreq | ( | void | ) |
The function osKernelGetSysTimerFreq returns the frequency of the current RTOS kernel system timer or 0 in case of a failure.