/*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
/**
\page os2Migration Migration from API v1 to API v2
This section lists the CMSIS-RTOS API v1 and API v2 functions along with the differences in functionality.
The list is sorted alphabetically by API v2 function names and is structured the following way:
- RTOS API v2 function prototype
- RTOS API v1 function prototype that is equivalent or provides similar functionality
- Brief description of the RTOS v2 function.
- Description of the difference.
The background color indicates:
-
Green: New functions in API v2 that are not available in API v1
- Amber: Functions that are modified or replaced in API v2 compared to API v1
- Red: Functions in API v1 that are deprecated in API v2
\if NEVER_ENABLE
=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====
Kernel Information and Control
\endif
\section mig_kernel Kernel Information and Control
\div{new}
\func{osStatus_t #osKernelGetInfo (osVersion_t* version, char* id_buf, uint32_t id_size)}
\none
\copybrief{osKernelGetInfo}
New function #osKernelGetInfo.
\enddiv
\div{mod}
\func{osKernelState_t #osKernelGetState (void)}
\func{int32_t osKernelRunning (void)}
\copybrief{osKernelGetState}
- The function \b osKernelGetState replaces the RTOS v1 function \b osKernelRunning.
- Return type changed to \ref osKernelState_t.
\enddiv
\div{mod}
\func{uint32_t #osKernelGetTickCount (void)}
\func{uint32_t osKernelSysTick (void)}
\copybrief{osKernelGetTickCount}
- The function \b osKernelGetTickCount replaces the RTOS v1 function \b osKernelSysTick.
\enddiv
\div{new}
\func{uint32_t #osKernelGetTickFreq (void)}
\none
\copybrief{osKernelGetTickFreq}
- The function \b osKernelGetTickFreq replaces the RTOS v1 macro \b osKernelTickMicroSec.
\enddiv
\div{new}
\func{uint64_t #osKernelGetSysTimerCount (void)}
\none
\copybrief{osKernelGetSysTimerCount}
New function.
\enddiv
\div{new}
\func{uint64_t #osKernelGetSysTimerFreq (void)}
\none
\copybrief{osKernelGetSysTimerFreq}
New function.
\enddiv
\div{mod}
\func{osStatus_t #osKernelInitialize (void)}
\func{osStatus osKernelInitialize (void)}
\copybrief{osKernelInitialize}
- Return type changed to \ref osStatus_t.
\enddiv
\div{new}
\func{uint32_t #osKernelLock (void)}
\none
\copybrief{osKernelLock}
New function.
\enddiv
\div{new}
\func{void #osKernelResume (uint32_t sleep_time)}
\none
\copybrief{osKernelResume}
New function.
\enddiv
\div{mod}
\func{osStatus_t #osKernelStart (void)}
\func{osStatus osKernelStart (void)}
\copybrief{osKernelStart}
- Return type changed to \ref osStatus_t.
\enddiv
\div{new}
\func{uint32_t #osKernelSuspend (void)}
\none
\copybrief{osKernelSuspend}
New function.
\enddiv
\div{new}
\func{void #osKernelUnlock (void)}
\none
\copybrief{osKernelUnlock}
New function.
\enddiv
\if NEVER_ENABLE
=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====
====== Thread Management =======
\endif
\section mig_threadMgmt Thread Management
\div{new}
\func{osStatus_t #osThreadDetach (osThreadId_t thread_id)}
\none
\copybrief{osThreadDetach}
New function.
\enddiv
\div{new}
\func{__NO_RETURN void #osThreadExit (void)}
\none
\copybrief{osThreadExit}
New function.
\enddiv
\div{new}
\func{const char *#osThreadGetName (osThreadId_t thread_id)}
\none
\copybrief{osThreadGetName}
New function.
\enddiv
\div{mod}
\func{osThreadId_t #osThreadGetId (void)}
\func{osThreadId osThreadGetId (void)}
\copybrief{osThreadGetId}
- Return type changed to #osThreadId_t.
\enddiv
\div{mod}
\func{osPriority_t #osThreadGetPriority (osThreadId_t thread_id)}
\func{osPriority osThreadGetPriority (osThreadId thread_id)}
\copybrief{osThreadGetPriority}
- Return type changed to #osPriority_t.
- Parameter type changed to #osThreadId_t.
\enddiv
\div{new}
\func{osThreadState_t #osThreadGetState (osThreadId_t thread_id)}
\none
\copybrief{osThreadGetState}
New function.
\enddiv
\div{new}
\func{osStatus_t #osThreadJoin (osThreadId_t thread_id)}
\none
\copybrief{osThreadJoin}
New function.
\enddiv
\div{mod}
\func{osThreadId_t #osThreadNew (os_thread_func_t function, void *argument, const osThreadAttr_t *attr)}
\func{osThreadId osThreadCreate (const osThreadDef_t *thread_def, void *argument)}
\copybrief{osThreadNew}
- The function \b osThreadNew replaces the RTOS v1 function \b osThreadCreate.
- Options are now passed using a \ref osThreadAttr_t struct, replacing the \b osThreadDef macro.
- New function prototype is void *func (void *arg), before: void func (const void *arg).
\enddiv
\div{new}
\func{osStatus_t #osThreadResume (osThreadId_t thread_id)}
\none
\copybrief{osThreadResume}
New function.
\enddiv
\div{mod}
\func{osStatus_t #osThreadSetPriority (osThreadId_t thread_id, osPriority_t priority)}
\func{osStatus osThreadSetPriority (osThreadId thread_id, osPriority priority)}
\copybrief{osThreadSetPriority}
- Return type changed to #osStatus_t.
- Parameter types changed to #osThreadId_t and #osPriority_t.
\enddiv
\div{new}
\func{osStatus_t #osThreadSuspend (osThreadId_t thread_id)}
\none
\copybrief{osThreadSuspend}
New function.
\enddiv
\div{new}
\func{osStatus_t #osThreadTerminate (osThreadId_t thread_id)}
\none
\copybrief{osThreadTerminate}
New function.
\enddiv
\div{mod}
\func{osStatus_t #osThreadYield (void)}
\func{osStatus osThreadYield (void)}
\copybrief{osThreadYield}
- Return type changed to #osStatus_t.
\enddiv
\if NEVER_ENABLE
=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====
====== Generic Wait Functions =======
\endif
\section mig_wait Generic Wait Functions
\details
Refer to \ref CMSIS_RTOS_Wait for details.
\div{mod}
\func{osStatus_t #osDelay (uint32_t ticks)}
\func{osStatus osDelay (uint32_t millisec)}
\copybrief{osDelay}
- The return type changed to #osStatus_t.
\enddiv
\div{mod}
\func{osStatus_t #osDelayUntil (uint64_t ticks)}
\func{osStatus osDelayUntil (uint64_t millisec)}
\copybrief{osDelayUntil}
- The return type changed to #osStatus_t.
\enddiv
\if NEVER_ENABLE
=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====
====== Timer Management =======
\endif
\section mig_timer Timer Management
\details
Refer to \ref CMSIS_RTOS_TimerMgmt for details.
\div{mod}
\func{osStatus_t #osTimerDelete (osTimerId_t timer_id)}
\func{osStatus osTimerDelete (osTimerId timer_id)}
\copybrief{osTimerDelete}
- The return type changed to #osStatus_t.
- The parameter type has changed to #osTimerId_t.
\enddiv
\div{new}
\func{uint32_t #osTimerIsRunning (osTimerId_t timer_id)}
\none
\copybrief{osTimerIsRunning}
New function.
\enddiv
\div{mod}
\func{osTimerId_t #osTimerNew (os_timer_func_t func, osTimerType_t type, void *argument, const osTimerAttr_t *attr)}
\func{osTimerId osTimerCreate (const osTimerDef_t *timer_def, os_timer_type type, void *argument)}
\copybrief{osTimerNew}
- The function \b osTimerNew replaces the RTOS v1 function \b osTimerCreate.
- The return type changed to #osTimerId_t.
- The parameter list and types have changed.
\enddiv
\div{mod}
\func{osStatus_t #osTimerStart (osTimerId_t timer_id, uint32_t ticks)}
\func{osStatus osTimerStart (osTimerId timer_id, uint32_t millisec)}
\copybrief{osTimerStart}
- The return type changed to #osStatus_t.
- The first parameter type has changed to #osTimerId_t.
\enddiv
\div{mod}
\func{osStatus_t #osTimerStop (osTimerId_t timer_id)}
\func{osStatus osTimerStop (osTimerId timer_id)}
\copybrief{osTimerStop}
- The return type changed to #osStatus_t.
- The parameter type has changed to #osTimerId_t.
\enddiv
\if NEVER_ENABLE
=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====
====== Signal Events =======
\endif
\section mig_signalEvents Signal Events
\details
The section RTOS v1 Signal Events has been deprecated.
Use the functions listed under \ref mig_threadFlags and \ref mig_eventFlags instead.
\div{del}
\none
\func{int32_t osSignalClear (osThreadId thread_id, int32_t signals)}
\n
Deprecated.
\enddiv
\div{del}
\none
\func{int32_t osSignalSet (osThreadId thread_id, int32_t signals)}
\n
Deprecated.
\enddiv
\div{del}
\none
\func{osEvent osSignalWait (int32_t signals, uint32_t millisec)}
\n
Deprecated.
\enddiv
\if NEVER_ENABLE
=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====
====== Event Flags =======
\endif
\section mig_eventFlags Event Flags
\details
New section to synchronize events using flags. Event flags and thread flags are replacing the RTOS v1 Signal Events.
All functions listed in the RTOS v1 Signal Events have been deprecated.
Refer to \ref mig_signalEvents for a list of deprecated functions.
Refer to \ref CMSIS_RTOS_EventFlags for details about the new function.
\div{new}
\func{int32_t #osEventFlagsClear (osEventFlagsId_t ef_id, int32_t flags)}
\none
\copybrief{osEventFlagsClear}
New function.
\enddiv
\div{new}
\func{osStatus_t #osEventFlagsDelete (osEventFlagsId_t ef_id)}
\none
\copybrief{osEventFlagsDelete}
New function.
\enddiv
\div{new}
\func{int32_t #osEventFlagsGet (osEventFlagsId_t ef_id)}
\none
\copybrief{osEventFlagsGet}
New function.
\enddiv
\div{new}
\func{osEventFlagsId_t #osEventFlagsNew (const osEventFlagsAttr_t *attr)}
\none
\copybrief{osEventFlagsNew}
New function.
\enddiv
\div{new}
\func{int32_t #osEventFlagsSet (osEventFlagsId_t ef_id, int32_t flags)}
\none
\copybrief{osEventFlagsSet}
New function.
\enddiv
\div{new}
\func{int32_t #osEventFlagsWait (osEventFlagsId_t ef_id, int32_t flags, uint32_t options, uint32_t timeout)}
\none
\copybrief{osEventFlagsWait}
New function.
\enddiv
\if NEVER_ENABLE
=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====
====== Thread Flags =======
\endif
\section mig_threadFlags Thread Flags
\details
New section to synchronize threads using flags. Thread flags and the more flexible \ref mig_eventFlags are replacing the RTOS v1 Signal Events. Refer to \ref mig_signalEvents for a list of deprecated functions.
Refer to \ref CMSIS_RTOS_ThreadFlagsMgmt for details.
\div{new}
\func{int32_t #osThreadFlagsSet (osThreadId_t thread_id, int32_t flags)}
\none
\copybrief{osThreadFlagsSet}
New function.
\enddiv
\div{new}
\func{int32_t #osThreadFlagsClear (int32_t flags)}
\none
\copybrief{osThreadFlagsClear}
New function.
\enddiv
\div{new}
\func{int32_t #osThreadFlagsGet (void)}
\none
\copybrief{osThreadFlagsGet}
New function.
\enddiv
\div{new}
\func{int32_t #osThreadFlagsWait (int32_t flags, uint32_t options, uint32_t timeout)}
\none
\copybrief{osThreadFlagsWait}
New function.
\enddiv
\if NEVER_ENABLE
=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====
====== Message Queue =======
\endif
\section mig_msgQueue Message Queue
Refer to \ref CMSIS_RTOS_Message for details.
\div{new}
\func{osStatus_t #osMessageQueueDelete (osMessageQueueId_t mq_id)}
\none
\copybrief{osMessageQueueDelete}
New function.
\enddiv
\div{mod}
\func{osStatus_t #osMessageQueueGet (osMessageQueueId_t mq_id, void *msg_ptr, uint8_t *msg_prio, uint32_t timeout)}
\func{osEvent osMessageGet (osMessageQId queue_id, uint32_t millisec)}
\copybrief{osMessageQueueGet}
- The function \b osMessageQueueGet replaces the RTOS v1 function \b osMessageGet.
- The return type changed to #osStatus_t.
- The parameter list and parameter types have changed.
\enddiv
\div{new}
\func{uint32_t #osMessageQueueGetCapacity (osMessageQueueId_t mq_id)}
\none
\copybrief{osMessageQueueGetCapacity}
New function.
\enddiv
\div{new}
\func{uint32_t #osMessageQueueGetCount (osMessageQueueId_t mq_id)}
\none
\copybrief{osMessageQueueGetCount}
New function.
\enddiv
\div{new}
\func{uint32_t #osMessageQueueGetMsgSize (osMessageQueueId_t mq_id)}
\none
\copybrief{osMessageQueueGetMsgSize}
New function.
\enddiv
\div{new}
\func{uint32_t #osMessageQueueGetSpace (osMessageQueueId_t mq_id)}
\none
\copybrief{osMessageQueueGetSpace}
New function.
\enddiv
\div{mod}
\func{osMessageQueueId_t #osMessageQueueNew (uint32_t msg_count, uint32_t msg_size, const osMessageQueueAttr_t *attr)}
\func{osMessageQId osMessageCreate (const osMessageQDef_t *queue_def, osThreadId thread_id)}
\copybrief{osMessageQueueNew}
- The function \b osMessageQueueNew replaces the RTOS v1 function \b osMessageCreate.
- The return type changed to #osMessageQueueId_t.
- The parameter list and parameter types have changed.
\enddiv
\div{mod}
\func{osStatus_t #osMessageQueuePut (osMessageQueueId_t mq_id, const void *msg_ptr, uint8_t msg_prio, uint32_t timeout)}
\func{osStatus osMessagePut (osMessageQId queue_id, uint32_t info, uint32_t millisec)}
\copybrief{osMessageQueuePut}
- The function \b osMessageQueuePut replaces the RTOS v1 function \b osMessagePut.
- The return type changed to #osStatus_t.
- The parameter list and parameter types have changed.
\enddiv
\div{new}
\func{osStatus_t #osMessageQueueReset (osMessageQueueId_t mq_id)}
\none
\copybrief{osMessageQueueReset}
New function.
\enddiv
\if NEVER_ENABLE
=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====
====== Memory Pool =======
\endif
\section mig_memPool Memory Pool
\div{mod}
\func{void * #osMemoryPoolAlloc (osMemoryPoolId_t mp_id, uint32_t timeout)}
\func{void * osPoolAlloc (osPoolId pool_id)}
\func{void * osPoolCAlloc (osPoolId pool_id)}
\copybrief{osMemoryPoolAlloc}
- The function \b osMemoryPoolAlloc replaces both RTOS v1 functions \b osPoolAlloc and \b osPoolCAlloc.
- The parameter list and types changed.
\enddiv
\div{new}
\func{osStatus_t #osMemoryPoolDelete (osMemoryPoolId_t mp_id)}
\none
\copybrief{osMemoryPoolDelete}
New function.
\enddiv
\div{mod}
\func{osStatus_t #osMemoryPoolFree (osMemoryPoolId_t mp_id, void * block)}
\func{osStatus osPoolFree (osPoolId pool_id, void * block)}
\copybrief{osMemoryPoolFree}
- The function \b osMemoryPoolFree replaces the RTOS v1 function \b osPoolFree.
- The first parameter type \b osMemoryPoolId_t replaces the ROTS v1 type \b osPoolId.
\enddiv
\div{new}
\func{uint32_t #osMemoryPoolGetBlockSize (osMemoryPoolId_t mp_id)}
\none
\copybrief{osMemoryPoolGetBlockSize}
New function.
\enddiv
\div{new}
\func{uint32_t #osMemoryPoolGetCapacity (osMemoryPoolId_t mp_id)}
\none
\copybrief{osMemoryPoolGetCapacity}
New function.
\enddiv
\div{new}
\func{uint32_t #osMemoryPoolGetCount (osMemoryPoolId_t mp_id)}
\none
\copybrief{osMemoryPoolGetCount}
New function.
\enddiv
\div{new}
\func{uint32_t #osMemoryPoolGetSpace (osMemoryPoolId_t mp_id)}
\none
\copybrief{osMemoryPoolGetSpace}
New function.
\enddiv
\div{mod}
\func{osMemoryPoolId_t #osMemoryPoolNew (uint32_t block_count, uint32_t block_size, const osMemoryPoolAttr_t *attr)}
\func{osPoolId osPoolCreate (const osPoolDef_t * pool_def)}
\copybrief{osMemoryPoolGetSpace}
- The function \b osMemoryPoolNew replaces the RTOS v1 function \b osPoolCreate.
- The return type changed to #osMemoryPoolId_t.
- Parameter list and parameter types have changed.
\enddiv
\if NEVER_ENABLE
=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====
====== Mail Queue =======
\endif
\section mig_mailQueue Mail Queue
The Mail Queue RTOS v1 functions have been deprecated.
Use the functionality of the \ref CMSIS_RTOS_Message instead.
Differences are listed under \ref mig_msgQueue.
\div{del}
\none
\func{void * osMailAlloc (osMailQId queue_id, uint32_t millisec)}
\n
Deprecated.
\enddiv
\div{del}
\none
\func{void * osMailCAlloc (osMailQId queue_id, uint32_t millisec)}
\n
Deprecated.
\enddiv
\div{del}
\none
\func{osMailQId osMailCreate (const osMailQDef_t *queue_def, osThreadId thread_id)}
\n
Deprecated.
\enddiv
\div{del}
\none
\func{osStatus osMailFree (osMailQId queue_id, void *mail)}
\n
Deprecated.
\enddiv
\div{del}
\none
\func{osEvent osMailGet (osMailQId queue_id, uint32_t millisec)}
\n
Deprecated.
\enddiv
\div{del}
\none
\func{osStatus osMailPut (osMailQId queue_id, void *mail)}
\n
Deprecated.
\enddiv
\if NEVER_ENABLE
=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====
====== Mutexes =======
\endif
\section mig_mutex Mutexes
Refer to \ref CMSIS_RTOS_MutexMgmt for details.
\div{mod}
\func{osStatus_t #osMutexAcquire (osMutexId_t mutex_id, uint32_t timeout)}
\func{osStatus osMutexWait (osMutexId mutex_id, uint32_t millisec)}
\copybrief{osMutexAcquire}
- The function \b osMutexAcquire replaces the RTOS v1 function \b osMutexWait.
- Return type changed to \ref osStatus_t.
- First parameter type changed to \ref osMutexId_t.
\enddiv
\div{mod}
\func{osStatus_t #osMutexDelete (osMutexId_t mutex_id)}
\func{osStatus osMutexDelete (osMutexId mutex_id)}
\copybrief{osMutexDelete}
- The return type changed to \ref osStatus_t.
- The parameter type changed to \ref osMutexId_t.
\enddiv
\div{new}
\func{osThreadId_t #osMutexGetOwner (osMutexId_t mutex_id)}
\none
\copybrief{osMutexGetOwner}
New function.
\enddiv
\div{mod}
\func{osMutexId_t #osMutexNew (const osMutexAttr_t *attr)}
\func{osMutexId osMutexCreate (const osMutexDef_t *mutex_def)}
\copybrief{osMutexNew}
- The function \b osMutexNew replaces the RTOS v1 function \b osMutexCreate.
- The return type changed to \ref osMutexId_t.
- The parameter type changed to \ref osMutexAttr_t.
\enddiv
\div{mod}
\func{osStatus_t #osMutexRelease (osMutexId_t mutex_id)}
\func{osStatus osMutexRelease (osMutexId mutex_id)}
\copybrief{osMutexRelease}
- The return type changed to \ref osStatus_t.
- The parameter type changed to \ref osMutexId_t.
\enddiv
\if NEVER_ENABLE
=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====
====== SEMAPHORES =======
\endif
\section mig_sem Semaphores
Refer to \ref CMSIS_RTOS_SemaphoreMgmt for details.
\div{new}
\func{osStatus_t #osSemaphoreAcquire (osSemaphoreId_t semaphore_id, uint32_t timeout)}
\none
\copybrief{osSemaphoreAcquire}
New function.
\enddiv
\div{mod}
\func{osStatus_t #osSemaphoreDelete (osSemaphoreId_t semaphore_id)}
\func{osStatus osSemaphoreDelete (osSemaphoreId semaphore_id)}
\copybrief{osSemaphoreDelete}
- The return type changed to #osStatus_t.
- The parameter type has changed to #osSemaphoreId_t.
\enddiv
\div{new}
\func{uint32_t #osSemaphoreGetCount (osSemaphoreId_t semaphore_id)}
\none
\copybrief{osSemaphoreGetCount}
New function.
\enddiv
\div{mod}
\func{osSemaphoreId_t #osSemaphoreNew (uint32_t max_count, uint32_t initial_count, const osSemaphoreAttr_t *attr)}
\func{osSemaphoreId osSemaphoreCreate (const osSemaphoreDef_t *semaphore_def, int32_t count)}
\copybrief{osSemaphoreNew}
- The function \b osSemaphoreNew replaces the RTOS v1 function \b osSemaphoreCreate.
- The return type changed to #osSemaphoreId_t.
- The parameter list and types have changed.
\enddiv
\div{mod}
\func{osStatus_t #osSemaphoreRelease (osSemaphoreId_t semaphore_id)}
\func{osStatus osSemaphoreRelease (osSemaphoreId semaphore_id)}
\copybrief{osSemaphoreRelease}
- The return type changed to #osStatus_t.
- The parameter type has changed to #osSemaphoreId_t.
\enddiv
\div{del}
\none
\func{int32_t osSemaphoreWait (osSemaphoreId semaphore_id, uint32_t millisec)}
\n
Deprecated.
\enddiv
*/