EU1KY AA FW
cmsis_os.h File Reference
#include <stdint.h>
#include <stddef.h>

Go to the source code of this file.

Data Structures

struct  os_thread_def
 
struct  os_timer_def
 
struct  os_mutex_def
 
struct  os_semaphore_def
 
struct  os_pool_def
 
struct  os_messageQ_def
 
struct  os_mailQ_def
 
struct  osEvent
 

Macros

#define osCMSIS   0x10002
 API version (main [31:16] .sub [15:0]) More...
 
#define osCMSIS_KERNEL   0x10000
 RTOS identification and version (main [31:16] .sub [15:0]) More...
 
#define osKernelSystemId   "KERNEL V1.00"
 RTOS identification string. More...
 
#define osFeature_MainThread   1
 main thread 1=main can be thread, 0=not available More...
 
#define osFeature_Pool   1
 Memory Pools: 1=available, 0=not available. More...
 
#define osFeature_MailQ   1
 Mail Queues: 1=available, 0=not available. More...
 
#define osFeature_MessageQ   1
 Message Queues: 1=available, 0=not available. More...
 
#define osFeature_Signals   8
 maximum number of Signal Flags available per thread More...
 
#define osFeature_Semaphore   30
 maximum count for osSemaphoreCreate function More...
 
#define osFeature_Wait   1
 osWait function: 1=available, 0=not available More...
 
#define osFeature_SysTick   1
 osKernelSysTick functions: 1=available, 0=not available More...
 
#define osWaitForever   0xFFFFFFFF
 wait forever timeout value More...
 
#define osKernelSysTickFrequency   100000000
 
#define osKernelSysTickMicroSec(microsec)   (((uint64_t)microsec * (osKernelSysTickFrequency)) / 1000000)
 
#define osThreadDef(name, priority, instances, stacksz)
 
#define osThread(name)   &os_thread_def_##name
 
#define osTimerDef(name, function)
 
#define osTimer(name)   &os_timer_def_##name
 
#define osMutexDef(name)   const osMutexDef_t os_mutex_def_##name = { 0 }
 
#define osMutex(name)   &os_mutex_def_##name
 
#define osSemaphoreDef(name)   const osSemaphoreDef_t os_semaphore_def_##name = { 0 }
 
#define osSemaphore(name)   &os_semaphore_def_##name
 
#define osPoolDef(name, no, type)
 Define a Memory Pool. More...
 
#define osPool(name)   &os_pool_def_##name
 Access a Memory Pool definition. More...
 
#define osMessageQDef(name, queue_sz, type)
 Create a Message Queue Definition. More...
 
#define osMessageQ(name)   &os_messageQ_def_##name
 Access a Message Queue Definition. More...
 
#define osMailQDef(name, queue_sz, type)
 Create a Mail Queue Definition. More...
 
#define osMailQ(name)   &os_mailQ_def_##name
 Access a Mail Queue Definition. More...
 

Typedefs

typedef void(* os_pthread) (void const *argument)
 
typedef void(* os_ptimer) (void const *argument)
 
typedef struct os_thread_cb * osThreadId
 
typedef struct os_timer_cb * osTimerId
 
typedef struct os_mutex_cb * osMutexId
 
typedef struct os_semaphore_cb * osSemaphoreId
 
typedef struct os_pool_cb * osPoolId
 
typedef struct os_messageQ_cb * osMessageQId
 
typedef struct os_mailQ_cb * osMailQId
 
typedef struct os_thread_def osThreadDef_t
 
typedef struct os_timer_def osTimerDef_t
 
typedef struct os_mutex_def osMutexDef_t
 
typedef struct os_semaphore_def osSemaphoreDef_t
 
typedef struct os_pool_def osPoolDef_t
 
typedef struct os_messageQ_def osMessageQDef_t
 
typedef struct os_mailQ_def osMailQDef_t
 

Enumerations

enum  osPriority {
  osPriorityIdle = -3, osPriorityLow = -2, osPriorityBelowNormal = -1, osPriorityNormal = 0,
  osPriorityAboveNormal = +1, osPriorityHigh = +2, osPriorityRealtime = +3, osPriorityError = 0x84
}
 
enum  osStatus {
  osOK = 0, osEventSignal = 0x08, osEventMessage = 0x10, osEventMail = 0x20,
  osEventTimeout = 0x40, osErrorParameter = 0x80, osErrorResource = 0x81, osErrorTimeoutResource = 0xC1,
  osErrorISR = 0x82, osErrorISRRecursive = 0x83, osErrorPriority = 0x84, osErrorNoMemory = 0x85,
  osErrorValue = 0x86, osErrorOS = 0xFF, os_status_reserved = 0x7FFFFFFF
}
 
enum  os_timer_type { osTimerOnce = 0, osTimerPeriodic = 1 }
 

Functions

osStatus osKernelInitialize (void)
 
osStatus osKernelStart (void)
 
int32_t osKernelRunning (void)
 
uint32_t osKernelSysTick (void)
 
osThreadId osThreadCreate (const osThreadDef_t *thread_def, void *argument)
 
osThreadId osThreadGetId (void)
 
osStatus osThreadTerminate (osThreadId thread_id)
 
osStatus osThreadYield (void)
 
osStatus osThreadSetPriority (osThreadId thread_id, osPriority priority)
 
osPriority osThreadGetPriority (osThreadId thread_id)
 
osStatus osDelay (uint32_t millisec)
 
osEvent osWait (uint32_t millisec)
 
osTimerId osTimerCreate (const osTimerDef_t *timer_def, os_timer_type type, void *argument)
 
osStatus osTimerStart (osTimerId timer_id, uint32_t millisec)
 
osStatus osTimerStop (osTimerId timer_id)
 
osStatus osTimerDelete (osTimerId timer_id)
 
int32_t osSignalSet (osThreadId thread_id, int32_t signals)
 
int32_t osSignalClear (osThreadId thread_id, int32_t signals)
 
osEvent osSignalWait (int32_t signals, uint32_t millisec)
 
osMutexId osMutexCreate (const osMutexDef_t *mutex_def)
 
osStatus osMutexWait (osMutexId mutex_id, uint32_t millisec)
 
osStatus osMutexRelease (osMutexId mutex_id)
 
osStatus osMutexDelete (osMutexId mutex_id)
 
osSemaphoreId osSemaphoreCreate (const osSemaphoreDef_t *semaphore_def, int32_t count)
 
int32_t osSemaphoreWait (osSemaphoreId semaphore_id, uint32_t millisec)
 
osStatus osSemaphoreRelease (osSemaphoreId semaphore_id)
 
osStatus osSemaphoreDelete (osSemaphoreId semaphore_id)
 
osPoolId osPoolCreate (const osPoolDef_t *pool_def)
 
voidosPoolAlloc (osPoolId pool_id)
 
voidosPoolCAlloc (osPoolId pool_id)
 
osStatus osPoolFree (osPoolId pool_id, void *block)
 
osMessageQId osMessageCreate (const osMessageQDef_t *queue_def, osThreadId thread_id)
 
osStatus osMessagePut (osMessageQId queue_id, uint32_t info, uint32_t millisec)
 
osEvent osMessageGet (osMessageQId queue_id, uint32_t millisec)
 
osMailQId osMailCreate (const osMailQDef_t *queue_def, osThreadId thread_id)
 
voidosMailAlloc (osMailQId queue_id, uint32_t millisec)
 
voidosMailCAlloc (osMailQId queue_id, uint32_t millisec)
 
osStatus osMailPut (osMailQId queue_id, void *mail)
 
osEvent osMailGet (osMailQId queue_id, uint32_t millisec)
 
osStatus osMailFree (osMailQId queue_id, void *mail)
 

Macro Definition Documentation

#define osCMSIS   0x10002

API version (main [31:16] .sub [15:0])

Note
MUST REMAIN UNCHANGED: osCMSIS identifies the CMSIS-RTOS API version.
#define osCMSIS_KERNEL   0x10000

RTOS identification and version (main [31:16] .sub [15:0])

Note
CAN BE CHANGED: osCMSIS_KERNEL identifies the underlying RTOS kernel and version number.
#define osFeature_MailQ   1

Mail Queues: 1=available, 0=not available.

#define osFeature_MainThread   1

main thread 1=main can be thread, 0=not available

Note
MUST REMAIN UNCHANGED: osFeature_xxx shall be consistent in every CMSIS-RTOS.
#define osFeature_MessageQ   1

Message Queues: 1=available, 0=not available.

#define osFeature_Pool   1

Memory Pools: 1=available, 0=not available.

#define osFeature_Semaphore   30

maximum count for osSemaphoreCreate function

#define osFeature_Signals   8

maximum number of Signal Flags available per thread

#define osFeature_SysTick   1

osKernelSysTick functions: 1=available, 0=not available

#define osFeature_Wait   1

osWait function: 1=available, 0=not available

#define osKernelSystemId   "KERNEL V1.00"

RTOS identification string.

Note
MUST REMAIN UNCHANGED: osKernelSystemId shall be consistent in every CMSIS-RTOS.
#define osKernelSysTickFrequency   100000000

The RTOS kernel system timer frequency in Hz

Note
Reflects the system timer setting and is typically defined in a configuration file.
#define osKernelSysTickMicroSec (   microsec)    (((uint64_t)microsec * (osKernelSysTickFrequency)) / 1000000)

Convert a microseconds value to a RTOS kernel system timer value.

Parameters
microsectime value in microseconds.
Returns
time value normalized to the osKernelSysTickFrequency
#define osMailQ (   name)    &os_mailQ_def_##name

Access a Mail Queue Definition.

Parameters
namename of the queue
Note
CAN BE CHANGED: The parameter to osMailQ shall be consistent but the macro body is implementation specific in every CMSIS-RTOS.
#define osMailQDef (   name,
  queue_sz,
  type 
)
Value:
const osMailQDef_t os_mailQ_def_##name = \
{ (queue_sz), sizeof (type) }
Definition: cmsis_os.h:216

Create a Mail Queue Definition.

Parameters
namename of the queue
queue_szmaximum number of messages in queue
typedata type of a single message element
Note
CAN BE CHANGED: The parameter to osMailQDef shall be consistent but the macro body is implementation specific in every CMSIS-RTOS.
#define osMessageQ (   name)    &os_messageQ_def_##name

Access a Message Queue Definition.

Parameters
namename of the queue
Note
CAN BE CHANGED: The parameter to osMessageQ shall be consistent but the macro body is implementation specific in every CMSIS-RTOS.
#define osMessageQDef (   name,
  queue_sz,
  type 
)
Value:
const osMessageQDef_t os_messageQ_def_##name = \
{ (queue_sz), sizeof (type) }
Definition: cmsis_os.h:208

Create a Message Queue Definition.

Parameters
namename of the queue.
queue_szmaximum number of messages in the queue.
typedata type of a single message element (for debugger).
Note
CAN BE CHANGED: The parameter to osMessageQDef shall be consistent but the macro body is implementation specific in every CMSIS-RTOS.
#define osMutex (   name)    &os_mutex_def_##name

Access a Mutex definition.

Parameters
namename of the mutex object.
Note
CAN BE CHANGED: The parameter to osMutex shall be consistent but the macro body is implementation specific in every CMSIS-RTOS.
#define osMutexDef (   name)    const osMutexDef_t os_mutex_def_##name = { 0 }

Define a Mutex.

Parameters
namename of the mutex object.
Note
CAN BE CHANGED: The parameter to osMutexDef shall be consistent but the macro body is implementation specific in every CMSIS-RTOS.
#define osPool (   name)    &os_pool_def_##name

Access a Memory Pool definition.

Parameters
namename of the memory pool
Note
CAN BE CHANGED: The parameter to osPool shall be consistent but the macro body is implementation specific in every CMSIS-RTOS.
#define osPoolDef (   name,
  no,
  type 
)
Value:
const osPoolDef_t os_pool_def_##name = \
{ (no), sizeof(type), NULL }
Definition: cmsis_os.h:200
#define NULL
Definition: usbd_def.h:53

Define a Memory Pool.

Parameters
namename of the memory pool.
nomaximum number of blocks (objects) in the memory pool.
typedata type of a single block (object).
Note
CAN BE CHANGED: The parameter to osPoolDef shall be consistent but the macro body is implementation specific in every CMSIS-RTOS.
#define osSemaphore (   name)    &os_semaphore_def_##name

Access a Semaphore definition.

Parameters
namename of the semaphore object.
Note
CAN BE CHANGED: The parameter to osSemaphore shall be consistent but the macro body is implementation specific in every CMSIS-RTOS.
#define osSemaphoreDef (   name)    const osSemaphoreDef_t os_semaphore_def_##name = { 0 }

Define a Semaphore object.

Parameters
namename of the semaphore object.
Note
CAN BE CHANGED: The parameter to osSemaphoreDef shall be consistent but the macro body is implementation specific in every CMSIS-RTOS.
#define osThread (   name)    &os_thread_def_##name

Access a Thread definition.

Parameters
namename of the thread definition object.
Note
CAN BE CHANGED: The parameter to osThread shall be consistent but the macro body is implementation specific in every CMSIS-RTOS.
#define osThreadDef (   name,
  priority,
  instances,
  stacksz 
)
Value:
const osThreadDef_t os_thread_def_##name = \
{ (name), (priority), (instances), (stacksz) }
Definition: cmsis_os.h:173

Create a Thread Definition with function, priority, and stack requirements.

Parameters
namename of the thread function.
priorityinitial priority of the thread function.
instancesnumber of possible thread instances.
stackszstack size (in bytes) requirements for the thread function.
Note
CAN BE CHANGED: The parameters to osThreadDef shall be consistent but the macro body is implementation specific in every CMSIS-RTOS.
#define osTimer (   name)    &os_timer_def_##name

Access a Timer definition.

Parameters
namename of the timer object.
Note
CAN BE CHANGED: The parameter to osTimer shall be consistent but the macro body is implementation specific in every CMSIS-RTOS.
#define osTimerDef (   name,
  function 
)
Value:
const osTimerDef_t os_timer_def_##name = \
{ (function) }
Definition: cmsis_os.h:182

Define a Timer object.

Parameters
namename of the timer object.
functionname of the timer call back function.
Note
CAN BE CHANGED: The parameter to osTimerDef shall be consistent but the macro body is implementation specific in every CMSIS-RTOS.
#define osWaitForever   0xFFFFFFFF

wait forever timeout value

Timeout value.

Note
MUST REMAIN UNCHANGED: osWaitForever shall be consistent in every CMSIS-RTOS.

Typedef Documentation

typedef void(* os_pthread) (void const *argument)

Entry point of a thread.

Note
MUST REMAIN UNCHANGED: os_pthread shall be consistent in every CMSIS-RTOS.
typedef void(* os_ptimer) (void const *argument)

Entry point of a timer call back function.

Note
MUST REMAIN UNCHANGED: os_ptimer shall be consistent in every CMSIS-RTOS.
typedef struct os_mailQ_def osMailQDef_t

Definition structure for mail queue.

Note
CAN BE CHANGED: os_mailQ_def is implementation specific in every CMSIS-RTOS.
typedef struct os_mailQ_cb* osMailQId

Mail ID identifies the mail queue (pointer to a mail queue control block).

Note
CAN BE CHANGED: os_mailQ_cb is implementation specific in every CMSIS-RTOS.

Definition structure for message queue.

Note
CAN BE CHANGED: os_messageQ_def is implementation specific in every CMSIS-RTOS.
typedef struct os_messageQ_cb* osMessageQId

Message ID identifies the message queue (pointer to a message queue control block).

Note
CAN BE CHANGED: os_messageQ_cb is implementation specific in every CMSIS-RTOS.
typedef struct os_mutex_def osMutexDef_t

Mutex Definition structure contains setup information for a mutex.

Note
CAN BE CHANGED: os_mutex_def is implementation specific in every CMSIS-RTOS.
typedef struct os_mutex_cb* osMutexId

Mutex ID identifies the mutex (pointer to a mutex control block).

Note
CAN BE CHANGED: os_mutex_cb is implementation specific in every CMSIS-RTOS.
typedef struct os_pool_def osPoolDef_t

Definition structure for memory block allocation.

Note
CAN BE CHANGED: os_pool_def is implementation specific in every CMSIS-RTOS.
typedef struct os_pool_cb* osPoolId

Pool ID identifies the memory pool (pointer to a memory pool control block).

Note
CAN BE CHANGED: os_pool_cb is implementation specific in every CMSIS-RTOS.

Semaphore Definition structure contains setup information for a semaphore.

Note
CAN BE CHANGED: os_semaphore_def is implementation specific in every CMSIS-RTOS.
typedef struct os_semaphore_cb* osSemaphoreId

Semaphore ID identifies the semaphore (pointer to a semaphore control block).

Note
CAN BE CHANGED: os_semaphore_cb is implementation specific in every CMSIS-RTOS.
typedef struct os_thread_def osThreadDef_t

Thread Definition structure contains startup information of a thread.

Note
CAN BE CHANGED: os_thread_def is implementation specific in every CMSIS-RTOS.
typedef struct os_thread_cb* osThreadId

Thread ID identifies the thread (pointer to a thread control block).

Note
CAN BE CHANGED: os_thread_cb is implementation specific in every CMSIS-RTOS.
typedef struct os_timer_def osTimerDef_t

Timer Definition structure contains timer parameters.

Note
CAN BE CHANGED: os_timer_def is implementation specific in every CMSIS-RTOS.
typedef struct os_timer_cb* osTimerId

Timer ID identifies the timer (pointer to a timer control block).

Note
CAN BE CHANGED: os_timer_cb is implementation specific in every CMSIS-RTOS.

Enumeration Type Documentation

Timer type value for the timer definition.

Note
MUST REMAIN UNCHANGED: os_timer_type shall be consistent in every CMSIS-RTOS.
Enumerator
osTimerOnce 

one-shot timer

osTimerPeriodic 

repeating timer

enum osPriority

Priority used for thread control.

Note
MUST REMAIN UNCHANGED: osPriority shall be consistent in every CMSIS-RTOS.
Enumerator
osPriorityIdle 

priority: idle (lowest)

osPriorityLow 

priority: low

osPriorityBelowNormal 

priority: below normal

osPriorityNormal 

priority: normal (default)

osPriorityAboveNormal 

priority: above normal

osPriorityHigh 

priority: high

osPriorityRealtime 

priority: realtime (highest)

osPriorityError 

system cannot determine priority or thread has illegal priority

enum osStatus

Status code values returned by CMSIS-RTOS functions.

Note
MUST REMAIN UNCHANGED: osStatus shall be consistent in every CMSIS-RTOS.
Enumerator
osOK 

function completed; no error or event occurred.

osEventSignal 

function completed; signal event occurred.

osEventMessage 

function completed; message event occurred.

osEventMail 

function completed; mail event occurred.

osEventTimeout 

function completed; timeout occurred.

osErrorParameter 

parameter error: a mandatory parameter was missing or specified an incorrect object.

osErrorResource 

resource not available: a specified resource was not available.

osErrorTimeoutResource 

resource not available within given time: a specified resource was not available within the timeout period.

osErrorISR 

not allowed in ISR context: the function cannot be called from interrupt service routines.

osErrorISRRecursive 

function called multiple times from ISR with same object.

osErrorPriority 

system cannot determine priority or thread has illegal priority.

osErrorNoMemory 

system is out of memory: it was impossible to allocate or reserve memory for the operation.

osErrorValue 

value of a parameter is out of range.

osErrorOS 

unspecified RTOS error: run-time error but no other error message fits.

os_status_reserved 

prevent from enum down-size compiler optimization.

Function Documentation

osStatus osDelay ( uint32_t  millisec)

Wait for Timeout (Time Delay).

Parameters
[in]millisectime delay value
Returns
status code that indicates the execution status of the function.
osStatus osKernelInitialize ( void  )

Initialize the RTOS Kernel for creating objects.

Returns
status code that indicates the execution status of the function.
Note
MUST REMAIN UNCHANGED: osKernelInitialize shall be consistent in every CMSIS-RTOS.
int32_t osKernelRunning ( void  )

Check if the RTOS kernel is already started.

Note
MUST REMAIN UNCHANGED: osKernelRunning shall be consistent in every CMSIS-RTOS.
Returns
0 RTOS is not started, 1 RTOS is started.
osStatus osKernelStart ( void  )

Start the RTOS Kernel.

Returns
status code that indicates the execution status of the function.
Note
MUST REMAIN UNCHANGED: osKernelStart shall be consistent in every CMSIS-RTOS.
uint32_t osKernelSysTick ( void  )

Get the RTOS kernel system timer counter

Note
MUST REMAIN UNCHANGED: osKernelSysTick shall be consistent in every CMSIS-RTOS.
Returns
RTOS kernel system timer as 32-bit value
void* osMailAlloc ( osMailQId  queue_id,
uint32_t  millisec 
)

Allocate a memory block from a mail.

Parameters
[in]queue_idmail queue ID obtained with osMailCreate.
[in]millisecCMSIS_RTOS_TimeOutValue or 0 in case of no time-out
Returns
pointer to memory block that can be filled with mail or NULL in case of error.
Note
MUST REMAIN UNCHANGED: osMailAlloc shall be consistent in every CMSIS-RTOS.
void* osMailCAlloc ( osMailQId  queue_id,
uint32_t  millisec 
)

Allocate a memory block from a mail and set memory block to zero.

Parameters
[in]queue_idmail queue ID obtained with osMailCreate.
[in]millisecCMSIS_RTOS_TimeOutValue or 0 in case of no time-out
Returns
pointer to memory block that can be filled with mail or NULL in case of error.
Note
MUST REMAIN UNCHANGED: osMailCAlloc shall be consistent in every CMSIS-RTOS.
osMailQId osMailCreate ( const osMailQDef_t queue_def,
osThreadId  thread_id 
)

Create and Initialize mail queue.

Parameters
[in]queue_defreference to the mail queue definition obtain with osMailQ
[in]thread_idthread ID (obtained by osThreadCreate or osThreadGetId) or NULL.
Returns
mail queue ID for reference by other functions or NULL in case of error.
Note
MUST REMAIN UNCHANGED: osMailCreate shall be consistent in every CMSIS-RTOS.
osStatus osMailFree ( osMailQId  queue_id,
void mail 
)

Free a memory block from a mail.

Parameters
[in]queue_idmail queue ID obtained with osMailCreate.
[in]mailpointer to the memory block that was obtained with osMailGet.
Returns
status code that indicates the execution status of the function.
Note
MUST REMAIN UNCHANGED: osMailFree shall be consistent in every CMSIS-RTOS.
osEvent osMailGet ( osMailQId  queue_id,
uint32_t  millisec 
)

Get a mail from a queue.

Parameters
[in]queue_idmail queue ID obtained with osMailCreate.
[in]millisecCMSIS_RTOS_TimeOutValue or 0 in case of no time-out
Returns
event that contains mail information or error code.
Note
MUST REMAIN UNCHANGED: osMailGet shall be consistent in every CMSIS-RTOS.
osStatus osMailPut ( osMailQId  queue_id,
void mail 
)

Put a mail to a queue.

Parameters
[in]queue_idmail queue ID obtained with osMailCreate.
[in]mailmemory block previously allocated with osMailAlloc or osMailCAlloc.
Returns
status code that indicates the execution status of the function.
Note
MUST REMAIN UNCHANGED: osMailPut shall be consistent in every CMSIS-RTOS.
osMessageQId osMessageCreate ( const osMessageQDef_t queue_def,
osThreadId  thread_id 
)

Create and Initialize a Message Queue.

Parameters
[in]queue_defqueue definition referenced with osMessageQ.
[in]thread_idthread ID (obtained by osThreadCreate or osThreadGetId) or NULL.
Returns
message queue ID for reference by other functions or NULL in case of error.
Note
MUST REMAIN UNCHANGED: osMessageCreate shall be consistent in every CMSIS-RTOS.
osEvent osMessageGet ( osMessageQId  queue_id,
uint32_t  millisec 
)

Get a Message or Wait for a Message from a Queue.

Parameters
[in]queue_idmessage queue ID obtained with osMessageCreate.
[in]millisecCMSIS_RTOS_TimeOutValue or 0 in case of no time-out.
Returns
event information that includes status code.
Note
MUST REMAIN UNCHANGED: osMessageGet shall be consistent in every CMSIS-RTOS.
osStatus osMessagePut ( osMessageQId  queue_id,
uint32_t  info,
uint32_t  millisec 
)

Put a Message to a Queue.

Parameters
[in]queue_idmessage queue ID obtained with osMessageCreate.
[in]infomessage information.
[in]millisecCMSIS_RTOS_TimeOutValue or 0 in case of no time-out.
Returns
status code that indicates the execution status of the function.
Note
MUST REMAIN UNCHANGED: osMessagePut shall be consistent in every CMSIS-RTOS.
osMutexId osMutexCreate ( const osMutexDef_t mutex_def)

Create and Initialize a Mutex object.

Parameters
[in]mutex_defmutex definition referenced with osMutex.
Returns
mutex ID for reference by other functions or NULL in case of error.
Note
MUST REMAIN UNCHANGED: osMutexCreate shall be consistent in every CMSIS-RTOS.
osStatus osMutexDelete ( osMutexId  mutex_id)

Delete a Mutex that was created by osMutexCreate.

Parameters
[in]mutex_idmutex ID obtained by osMutexCreate.
Returns
status code that indicates the execution status of the function.
Note
MUST REMAIN UNCHANGED: osMutexDelete shall be consistent in every CMSIS-RTOS.
osStatus osMutexRelease ( osMutexId  mutex_id)

Release a Mutex that was obtained by osMutexWait.

Parameters
[in]mutex_idmutex ID obtained by osMutexCreate.
Returns
status code that indicates the execution status of the function.
Note
MUST REMAIN UNCHANGED: osMutexRelease shall be consistent in every CMSIS-RTOS.
osStatus osMutexWait ( osMutexId  mutex_id,
uint32_t  millisec 
)

Wait until a Mutex becomes available.

Parameters
[in]mutex_idmutex ID obtained by osMutexCreate.
[in]millisecCMSIS_RTOS_TimeOutValue or 0 in case of no time-out.
Returns
status code that indicates the execution status of the function.
Note
MUST REMAIN UNCHANGED: osMutexWait shall be consistent in every CMSIS-RTOS.
void* osPoolAlloc ( osPoolId  pool_id)

Allocate a memory block from a memory pool.

Parameters
[in]pool_idmemory pool ID obtain referenced with osPoolCreate.
Returns
address of the allocated memory block or NULL in case of no memory available.
Note
MUST REMAIN UNCHANGED: osPoolAlloc shall be consistent in every CMSIS-RTOS.
void* osPoolCAlloc ( osPoolId  pool_id)

Allocate a memory block from a memory pool and set memory block to zero.

Parameters
[in]pool_idmemory pool ID obtain referenced with osPoolCreate.
Returns
address of the allocated memory block or NULL in case of no memory available.
Note
MUST REMAIN UNCHANGED: osPoolCAlloc shall be consistent in every CMSIS-RTOS.
osPoolId osPoolCreate ( const osPoolDef_t pool_def)

Create and Initialize a memory pool.

Parameters
[in]pool_defmemory pool definition referenced with osPool.
Returns
memory pool ID for reference by other functions or NULL in case of error.
Note
MUST REMAIN UNCHANGED: osPoolCreate shall be consistent in every CMSIS-RTOS.
osStatus osPoolFree ( osPoolId  pool_id,
void block 
)

Return an allocated memory block back to a specific memory pool.

Parameters
[in]pool_idmemory pool ID obtain referenced with osPoolCreate.
[in]blockaddress of the allocated memory block that is returned to the memory pool.
Returns
status code that indicates the execution status of the function.
Note
MUST REMAIN UNCHANGED: osPoolFree shall be consistent in every CMSIS-RTOS.
osSemaphoreId osSemaphoreCreate ( const osSemaphoreDef_t semaphore_def,
int32_t  count 
)

Create and Initialize a Semaphore object used for managing resources.

Parameters
[in]semaphore_defsemaphore definition referenced with osSemaphore.
[in]countnumber of available resources.
Returns
semaphore ID for reference by other functions or NULL in case of error.
Note
MUST REMAIN UNCHANGED: osSemaphoreCreate shall be consistent in every CMSIS-RTOS.
osStatus osSemaphoreDelete ( osSemaphoreId  semaphore_id)

Delete a Semaphore that was created by osSemaphoreCreate.

Parameters
[in]semaphore_idsemaphore object referenced with osSemaphoreCreate.
Returns
status code that indicates the execution status of the function.
Note
MUST REMAIN UNCHANGED: osSemaphoreDelete shall be consistent in every CMSIS-RTOS.
osStatus osSemaphoreRelease ( osSemaphoreId  semaphore_id)

Release a Semaphore token.

Parameters
[in]semaphore_idsemaphore object referenced with osSemaphoreCreate.
Returns
status code that indicates the execution status of the function.
Note
MUST REMAIN UNCHANGED: osSemaphoreRelease shall be consistent in every CMSIS-RTOS.
int32_t osSemaphoreWait ( osSemaphoreId  semaphore_id,
uint32_t  millisec 
)

Wait until a Semaphore token becomes available.

Parameters
[in]semaphore_idsemaphore object referenced with osSemaphoreCreate.
[in]millisecCMSIS_RTOS_TimeOutValue or 0 in case of no time-out.
Returns
number of available tokens, or -1 in case of incorrect parameters.
Note
MUST REMAIN UNCHANGED: osSemaphoreWait shall be consistent in every CMSIS-RTOS.
int32_t osSignalClear ( osThreadId  thread_id,
int32_t  signals 
)

Clear the specified Signal Flags of an active thread.

Parameters
[in]thread_idthread ID obtained by osThreadCreate or osThreadGetId.
[in]signalsspecifies the signal flags of the thread that shall be cleared.
Returns
previous signal flags of the specified thread or 0x80000000 in case of incorrect parameters or call from ISR.
Note
MUST REMAIN UNCHANGED: osSignalClear shall be consistent in every CMSIS-RTOS.
int32_t osSignalSet ( osThreadId  thread_id,
int32_t  signals 
)

Set the specified Signal Flags of an active thread.

Parameters
[in]thread_idthread ID obtained by osThreadCreate or osThreadGetId.
[in]signalsspecifies the signal flags of the thread that should be set.
Returns
previous signal flags of the specified thread or 0x80000000 in case of incorrect parameters.
Note
MUST REMAIN UNCHANGED: osSignalSet shall be consistent in every CMSIS-RTOS.
osEvent osSignalWait ( int32_t  signals,
uint32_t  millisec 
)

Wait for one or more Signal Flags to become signaled for the current RUNNING thread.

Parameters
[in]signalswait until all specified signal flags set or 0 for any single signal flag.
[in]millisecCMSIS_RTOS_TimeOutValue or 0 in case of no time-out.
Returns
event flag information or error code.
Note
MUST REMAIN UNCHANGED: osSignalWait shall be consistent in every CMSIS-RTOS.
osThreadId osThreadCreate ( const osThreadDef_t thread_def,
void argument 
)

Create a thread and add it to Active Threads and set it to state READY.

Parameters
[in]thread_defthread definition referenced with osThread.
[in]argumentpointer that is passed to the thread function as start argument.
Returns
thread ID for reference by other functions or NULL in case of error.
Note
MUST REMAIN UNCHANGED: osThreadCreate shall be consistent in every CMSIS-RTOS.
osThreadId osThreadGetId ( void  )

Return the thread ID of the current running thread.

Returns
thread ID for reference by other functions or NULL in case of error.
Note
MUST REMAIN UNCHANGED: osThreadGetId shall be consistent in every CMSIS-RTOS.
osPriority osThreadGetPriority ( osThreadId  thread_id)

Get current priority of an active thread.

Parameters
[in]thread_idthread ID obtained by osThreadCreate or osThreadGetId.
Returns
current priority value of the thread function.
Note
MUST REMAIN UNCHANGED: osThreadGetPriority shall be consistent in every CMSIS-RTOS.
osStatus osThreadSetPriority ( osThreadId  thread_id,
osPriority  priority 
)

Change priority of an active thread.

Parameters
[in]thread_idthread ID obtained by osThreadCreate or osThreadGetId.
[in]prioritynew priority value for the thread function.
Returns
status code that indicates the execution status of the function.
Note
MUST REMAIN UNCHANGED: osThreadSetPriority shall be consistent in every CMSIS-RTOS.
osStatus osThreadTerminate ( osThreadId  thread_id)

Terminate execution of a thread and remove it from Active Threads.

Parameters
[in]thread_idthread ID obtained by osThreadCreate or osThreadGetId.
Returns
status code that indicates the execution status of the function.
Note
MUST REMAIN UNCHANGED: osThreadTerminate shall be consistent in every CMSIS-RTOS.
osStatus osThreadYield ( void  )

Pass control to next thread that is in state READY.

Returns
status code that indicates the execution status of the function.
Note
MUST REMAIN UNCHANGED: osThreadYield shall be consistent in every CMSIS-RTOS.
osTimerId osTimerCreate ( const osTimerDef_t timer_def,
os_timer_type  type,
void argument 
)

Create a timer.

Parameters
[in]timer_deftimer object referenced with osTimer.
[in]typeosTimerOnce for one-shot or osTimerPeriodic for periodic behavior.
[in]argumentargument to the timer call back function.
Returns
timer ID for reference by other functions or NULL in case of error.
Note
MUST REMAIN UNCHANGED: osTimerCreate shall be consistent in every CMSIS-RTOS.
osStatus osTimerDelete ( osTimerId  timer_id)

Delete a timer that was created by osTimerCreate.

Parameters
[in]timer_idtimer ID obtained by osTimerCreate.
Returns
status code that indicates the execution status of the function.
Note
MUST REMAIN UNCHANGED: osTimerDelete shall be consistent in every CMSIS-RTOS.
osStatus osTimerStart ( osTimerId  timer_id,
uint32_t  millisec 
)

Start or restart a timer.

Parameters
[in]timer_idtimer ID obtained by osTimerCreate.
[in]millisectime delay value of the timer.
Returns
status code that indicates the execution status of the function.
Note
MUST REMAIN UNCHANGED: osTimerStart shall be consistent in every CMSIS-RTOS.
osStatus osTimerStop ( osTimerId  timer_id)

Stop the timer.

Parameters
[in]timer_idtimer ID obtained by osTimerCreate.
Returns
status code that indicates the execution status of the function.
Note
MUST REMAIN UNCHANGED: osTimerStop shall be consistent in every CMSIS-RTOS.
osEvent osWait ( uint32_t  millisec)

Wait for Signal, Message, Mail, or Timeout.

Parameters
[in]millisecCMSIS_RTOS_TimeOutValue or 0 in case of no time-out
Returns
event that contains signal, message, or mail information or error code.
Note
MUST REMAIN UNCHANGED: osWait shall be consistent in every CMSIS-RTOS.