]> begriffs open source - cmsis/blob - CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Migration.txt
Initial CMSIS-RTOS v2 API Documentation, Example and Component Viewer Description
[cmsis] / CMSIS / DoxyGen / RTOS2 / src / cmsis_os2_Migration.txt
1 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
2 /**
3 \page os2Migration Migration from RTOSv1 to RTOSv2
4
5 This section lists all new API functions along with the differences to the RTOS v1 functionality.
6
7 The list is sorted alphabetically by RTOSv2 function names and is structured the following way:
8 <hr>
9 \token{for RTOS v2} : \func{RTOS version 2 function}
10 \token{for RTOS v1} : \func{RTOS version 1 function}
11  
12 Brief description of new function. \n
13 Description of the difference.
14
15 \div{new} New functions have a green background. \enddiv 
16 \div{mod} Modifying or replacing functions have an amber background. \enddiv 
17 \div{del} Deprecated functions without replacement have a red background. \enddiv 
18
19
20 \if NEVER_ENABLE
21 =======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====
22        Kernel Information and Control  
23 \endif
24
25 \section mig_kernel Kernel Information and Control
26
27 \div{new}
28 \func{osStatus_t #osKernelGetInfo (osVersion_t* version, char* id_buf, uint32_t id_size)}
29 \none
30 \copybrief{osKernelGetInfo}
31 New function #osKernelGetInfo.
32 \enddiv
33
34 \div{mod} 
35 \func{osKernelState_t #osKernelGetState (void)}
36 \func{int32_t &nbsp; &nbsp; &nbsp; &nbsp; osKernelRunning (void)}
37 \copybrief{osKernelGetState}
38  - The function \b osKernelGetState replaces the RTOS v1 function \b osKernelRunning.
39  - Return type changed to \ref osKernelState_t.
40
41 \enddiv
42
43 \div{mod}
44 \func{uint32_t #osKernelGetTick (void)}
45 \func{uint32_t osKernelSysTick (void)}
46 \copybrief{osKernelGetTick}
47  - The function \b osKernelGetTick replaces the RTOS v1 function \b osKernelSysTick.
48
49 \enddiv
50
51 \div{new}
52 \func{uint64_t #osKernelGetTime (void)}
53 \none
54 \copybrief{osKernelGetTime}
55 New function.
56 \enddiv
57
58 \div{mod}
59 \func{osStatus_t #osKernelInitialize (void)}
60 \func{osStatus &nbsp; osKernelInitialize (void)}
61 \copybrief{osKernelInitialize}
62  - Return type changed to \ref osStatus_t.
63
64 \enddiv
65
66 \div{new}
67 \func{uint32_t osKernelLock (void)}
68 \none
69 \copybrief{osKernelLock}
70 New function.
71 \enddiv
72
73 \div{new}
74 \func{void #osKernelResume (uint32_t sleep_time)}
75 \none
76 \copybrief{osKernelResume}
77 New function.
78 \enddiv
79
80 \div{mod}
81 \func{osStatus_t #osKernelStart (void)}
82 \func{osStatus &nbsp; osKernelStart (void)}
83 \copybrief{osKernelStart}
84  - Return type changed to \ref osStatus_t.
85
86 \enddiv
87
88 \div{new}
89 \func{uint32_t osKernelSuspend (void)}
90 \none
91 \copybrief{osKernelSuspend}
92 New function.
93 \enddiv
94
95 \div{mod}
96 \func{uint32_t #osKernelTickMicroSec (uint32_t microsec)}
97 \func{uint32_t osKernelTickMicroSec (osKernelSysTickFrequency)}
98 \copybrief{osKernelTickMicroSec}
99  - The function \b osKernelTickMicroSec replaces the RTOS v1 macro \b osKernelTickMicroSec.
100
101 \enddiv
102
103 \div{new}
104 \func{void #osKernelUnlock (void)}
105 \none
106 \copybrief{osKernelUnlock}
107 New function.
108 \enddiv
109
110
111 \if NEVER_ENABLE
112 =======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====
113 ======  Thread Management  =======
114 \endif 
115
116 \section mig_threadMgmt Thread Management
117
118 \div{new}
119 \func{osStatus_t #osThreadAbortWait (osThreadId_t thread_id)}
120 \none
121 \copybrief{osThreadAbortWait}
122 New function.
123 \enddiv
124
125 \div{new}
126 \func{osStatus_t #osThreadDetach (osThreadId_t thread_id)}
127 \none
128 \copybrief{osThreadDetach}
129 New function.
130 \enddiv
131
132 \div{new}
133 \func{__NO_RETURN void #osThreadExit (void * exit_ptr)}
134 \none
135 \copybrief{osThreadExit}
136 New function.
137 \enddiv
138
139 \div{mod}
140 \func{osThreadId_t #osThreadGetId (void)}
141 \func{osThreadId &nbsp; osThreadGetId (void)}
142 \copybrief{osThreadGetId}
143  - Return type changed to #osThreadId_t.
144
145 \enddiv
146
147 \div{mod}
148 \func{osPriority_t #osThreadGetPriority (osThreadId_t thread_id)}
149 \func{osPriority &nbsp; osThreadGetPriority (osThreadId thread_id)}
150 \copybrief{osThreadGetPriority}
151  - Return type changed to #osPriority_t. 
152  - Parameter type changed to #osThreadId_t.
153
154 \enddiv
155
156 \div{new}
157 \func{osThreadState_t #osThreadGetState (osThreadId_t thread_id)}
158 \none
159 \copybrief{osThreadGetState}
160 New function.
161 \enddiv
162
163 \div{new}
164 \func{osStatus_t #osThreadJoin (osThreadId_t thread_id, void **exit_ptr)}
165 \none
166 \copybrief{osThreadJoin}
167 New function.
168 \enddiv
169
170 \div{mod}
171 \func{osThreadId_t #osThreadNew (os_thread_func_t function, void *argument, const osThreadAttr_t *attr)}
172 \func{osThreadId &nbsp; osThreadCreate (const osThreadDef_t *thread_def, void *argument)} 
173 \copybrief{osThreadNew}
174  - The function \b osThreadNew replaces the RTOS v1 function \b osThreadCreate.
175  - Options are now passed using a \ref osThreadAttr_t struct, replacing the \b osThreadDef macro. 
176  - New function prototype is <kbd>void *func (void *arg)</kbd>, before: <kbd>void func (const void *arg)</kbd>.
177
178 \enddiv
179
180 \div{new}
181 \func{osStatus_t #osThreadResume (osThreadId_t thread_id)}
182 \none
183 \copybrief{osThreadResume}
184 New function.
185 \enddiv
186
187 \div{mod}
188 \func{osStatus_t #osThreadSetPriority (osThreadId_t thread_id, osPriority_t priority)}
189 \func{osStatus  &nbsp; osThreadSetPriority (osThreadId thread_id, osPriority priority)} 
190 \copybrief{osThreadSetPriority}
191  - Return type changed to #osStatus_t. 
192  - Parameter types changed to #osThreadId_t and #osPriority_t.
193
194 \enddiv
195
196 \div{new}
197 \func{osStatus_t #osThreadSuspend (osThreadId_t thread_id)}
198 \none
199 \copybrief{osThreadSuspend}
200 New function.
201 \enddiv
202
203 \div{new}
204 \func{osStatus_t #osThreadTerminate (osThreadId_t thread_id)}
205 \none
206 \copybrief{osThreadTerminate}
207 New function.
208 \enddiv
209
210 \div{mod}
211 \func{osStatus_t #osThreadYield (void)}
212 \func{osStatus  &nbsp; osThreadYield (void)} 
213 \copybrief{osThreadYield}
214  - Return type changed to #osStatus_t.
215
216 \enddiv
217
218
219 \if NEVER_ENABLE
220 =======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====
221 ======  Generic Wait Functions  =======
222 \endif
223
224 \section mig_wait Generic Wait Functions
225 \details
226 Refer to \ref CMSIS_RTOS_Wait for details.
227
228 \div{mod}
229 \func{osStatus_t #osDelay (uint32_t millisec)}
230 \func{osStatus &nbsp; osDelay (uint32_t millisec)}
231 \copybrief{osDelay}
232  - The return type changed to #osStatus_t. 
233
234 \enddiv
235
236 \div{mod}
237 \func{osStatus_t #osDelayUntil (uint64_t millisec)}
238 \func{osStatus &nbsp; osDelayUntil (uint64_t millisec)}
239 \copybrief{osDelayUntil}
240  - The return type changed to #osStatus_t. 
241
242 \enddiv
243
244
245 \if NEVER_ENABLE
246 =======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====
247 ======  Timer Management  =======
248 \endif
249
250 \section mig_timer Timer Management
251 \details
252 Refer to \ref CMSIS_RTOS_TimerMgmt for details.
253
254 \div{mod}
255 \func{osStatus_t #osTimerDelete (osTimerId_t timer_id)}
256 \func{osStatus &nbsp; osTimerDelete (osTimerId timer_id)}
257 \copybrief{osTimerDelete}
258  - The return type changed to #osStatus_t. 
259  - The parameter type has changed to #osTimerId_t.
260
261 \enddiv
262
263 \div{new}
264 \func{uint32_t #osTimerIsRunning (osTimerId_t timer_id)}
265 \none
266 \copybrief{osTimerIsRunning}
267 New function.
268 \enddiv
269
270 \div{mod}
271 \func{osTimerId_t #osTimerNew (os_timer_func_t func, osTimerType_t type, void *argument, const osTimerAttr_t *attr)}
272 \func{osTimerId &nbsp; osTimerCreate (const osTimerDef_t *timer_def, os_timer_type type, void *argument)}
273 \copybrief{osTimerNew}
274  - The function \b osTimerNew replaces the RTOS v1 function \b osTimerCreate.
275  - The return type changed to #osTimerId_t. 
276  - The parameter list and types have changed.
277
278 \enddiv
279
280 \div{mod}
281 \func{osStatus_t #osTimerStart (osTimerId_t timer_id, uint32_t millisec)}
282 \func{osStatus &nbsp; osTimerStart (osTimerId timer_id, uint32_t millisec)}
283 \copybrief{osTimerStart}
284  - The return type changed to #osStatus_t. 
285  - The first parameter type has changed to #osTimerId_t.
286
287 \enddiv
288
289 \div{mod}
290 \func{osStatus_t #osTimerStop (osTimerId_t timer_id)}
291 \func{osStatus &nbsp; osTimerStop (osTimerId timer_id)}
292 \copybrief{osTimerStop}
293  - The return type changed to #osStatus_t. 
294  - The parameter type has changed to #osTimerId_t.
295
296 \enddiv
297
298
299 \if NEVER_ENABLE
300 =======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====
301 ======  Signal Events  =======
302 \endif
303
304 \section mig_signalEvents Signal Events
305 \details
306 The section RTOS v1 <b>Signal Events</b> has been deprecated.
307 Use the functions listed under \ref mig_threadFlags and \ref mig_eventFlags instead.
308
309 \div{del}
310 \none
311 \func{int32_t osSignalClear (osThreadId thread_id, int32_t signals)}
312 \n
313 Deprecated.
314 \enddiv
315
316 \div{del}
317 \none
318 \func{int32_t osSignalSet (osThreadId thread_id, int32_t signals)}
319 \n
320 Deprecated.
321 \enddiv
322
323 \div{del}
324 \none
325 \func{osEvent osSignalWait (int32_t signals, uint32_t millisec)}
326 \n
327 Deprecated.
328 \enddiv
329
330
331
332 \if NEVER_ENABLE
333 =======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====
334 ======  Event Flags  =======
335 \endif 
336
337 \section mig_eventFlags Event Flags
338 \details
339 New section to synchronize events using flags. Event flags and thread flags are replacing the RTOS v1 <b>Signal Events</b>.
340 All functions listed in the RTOS v1 <b>Signal Events</b> have been deprecated.
341 Refer to \ref mig_signalEvents for a list of deprecated functions.
342 Refer to \ref CMSIS_RTOS_EventFlags for details about the new function.
343
344 \div{new}
345 \func{int32_t #osEventFlagsClear (osEventFlagsId_t ef_id, int32_t flags)}
346 \none
347 \copybrief{osEventFlagsClear}
348 New function.
349 \enddiv
350
351 \div{new}
352 \func{osStatus_t #osEventFlagsDelete (osEventFlagsId_t ef_id)}
353 \none
354 \copybrief{osEventFlagsDelete}
355 New function.
356 \enddiv
357
358 \div{new}
359 \func{int32_t #osEventFlagsGet (osEventFlagsId_t ef_id)}
360 \none
361 \copybrief{osEventFlagsGet}
362 New function.
363 \enddiv
364
365 \div{new}
366 \func{osEventFlagsId_t #osEventFlagsNew (const osEventFlagsAttr_t *attr)}
367 \none
368 \copybrief{osEventFlagsNew}
369 New function.
370 \enddiv
371
372 \div{new}
373 \func{int32_t #osEventFlagsSet (osEventFlagsId_t ef_id, int32_t flags)}
374 \none
375 \copybrief{osEventFlagsSet}
376 New function.
377 \enddiv
378
379 \div{new}
380 \func{int32_t #osEventFlagsWait (osEventFlagsId_t ef_id, int32_t flags, uint32_t options, uint32_t millisec)}
381 \none
382 \copybrief{osEventFlagsWait}
383 New function.
384 \enddiv
385
386
387 \if NEVER_ENABLE
388 =======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====
389 ======  Thread Flags  =======
390 \endif 
391
392 \section mig_threadFlags Thread Flags
393 \details
394 New section to synchronize threads using flags. Thread flags and the more flexible \ref mig_eventFlags are replacing the RTOS v1 <b>Signal Events</b>. Refer to \ref mig_signalEvents for a list of deprecated functions.
395 Refer to \ref CMSIS_RTOS_ThreadFlagsMgmt for details.
396
397 \div{new}
398 \func{int32_t #osThreadFlagsSet (osThreadId_t thread_id, int32_t flags)}
399 \none
400 \copybrief{osThreadFlagsSet}
401 New function.
402 \enddiv
403
404 \div{new}
405 \func{int32_t #osThreadFlagsWait (int32_t flags, uint32_t options, uint32_t millisec)}
406 \none
407 \copybrief{osThreadFlagsWait}
408 New function.
409 \enddiv
410
411
412 \if NEVER_ENABLE
413 =======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====
414 ======  Message Queue  =======
415 \endif
416
417 \section mig_msgQueue Message Queue
418 Refer to \ref CMSIS_RTOS_Message for details.
419
420 \div{new}
421 \func{osStatus_t #osMessageQueueDelete (osMessageQueueId_t mq_id)}
422 \none
423 \copybrief{osMessageQueueDelete}
424 New function.
425 \enddiv
426
427 \div{mod}
428 \func{osStatus_t #osMessageQueueGet (osMessageQueueId_t mq_id, void *msg_ptr, uint8_t *msg_prio, uint32_t millisec)}
429 \func{osEvent &nbsp;&nbsp; osMessageGet (osMessageQId queue_id, uint32_t millisec)}
430 \copybrief{osMessageQueueGet}
431  - The function \b osMessageQueueGet replaces the RTOS v1 function \b osMessageGet.
432  - The return type changed to #osStatus_t. 
433  - The parameter list and parameter types have changed. 
434
435 \enddiv
436
437 \div{new}
438 \func{uint32_t #osMessageQueueGetCapacity (osMessageQueueId_t mq_id)}
439 \none
440 \copybrief{osMessageQueueGetCapacity}
441 New function.
442 \enddiv
443
444 \div{new}
445 \func{uint32_t #osMessageQueueGetCount (osMessageQueueId_t mq_id)}
446 \none
447 \copybrief{osMessageQueueGetCount}
448 New function.
449 \enddiv
450
451 \div{new}
452 \func{uint32_t #osMessageQueueGetMsgSize (osMessageQueueId_t mq_id)}
453 \none
454 \copybrief{osMessageQueueGetMsgSize}
455 New function.
456 \enddiv
457
458 \div{new}
459 \func{uint32_t #osMessageQueueGetSpace (osMessageQueueId_t mq_id)}
460 \none
461 \copybrief{osMessageQueueGetSpace}
462 New function.
463 \enddiv
464
465 \div{mod}
466 \func{osMessageQueueId_t #osMessageQueueNew (uint32_t msg_count, uint32_t msg_size, const osMessageQueueAttr_t *attr)}
467 \func{osMessageQId &nbsp; &nbsp; &nbsp; osMessageCreate (const osMessageQDef_t *queue_def, osThreadId thread_id)}
468 \copybrief{osMessageQueueNew}
469  - The function \b osMessageQueueNew replaces the RTOS v1 function \b osMessageCreate.
470  - The return type changed to #osMessageQueueId_t. 
471  - The parameter list and parameter types have changed. 
472
473 \enddiv
474
475 \div{mod}
476 \func{osStatus_t #osMessageQueuePut (osMessageQueueId_t mq_id, const void *msg_ptr, uint8_t msg_prio, uint32_t millisec)}
477 \func{osStatus &nbsp; osMessagePut (osMessageQId queue_id, uint32_t info, uint32_t millisec)}
478 \copybrief{osMessageQueuePut}
479  - The function \b osMessageQueuePut replaces the RTOS v1 function \b osMessagePut.
480  - The return type changed to #osStatus_t. 
481  - The parameter list and parameter types have changed. 
482
483 \enddiv
484
485 \div{new}
486 \func{osStatus_t #osMessageQueueReset (osMessageQueueId_t mq_id)}
487 \none
488 \copybrief{osMessageQueueReset}
489 New function.
490 \enddiv
491
492
493 \if NEVER_ENABLE
494 =======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====
495 ======  Memory Pool  =======
496 \endif
497
498 \section mig_memPool Memory Pool
499
500 \div{mod}
501 \func{void * #osMemoryPoolAlloc (osMemoryPoolId_t mp_id, uint32_t millisec)}
502 \func{void * osPoolAlloc &nbsp;(osPoolId pool_id)} 
503 \func{void * osPoolCAlloc (osPoolId pool_id)} 
504 \copybrief{osMemoryPoolAlloc}
505  - The function \b osMemoryPoolAlloc replaces both RTOS v1 functions \b osPoolAlloc and \b osPoolCAlloc.
506  - The parameter list and types changed.
507
508 \enddiv
509
510 \div{new}
511 \func{osStatus_t #osMemoryPoolDelete (osMemoryPoolId_t mp_id)}
512 \none
513 \copybrief{osMemoryPoolDelete}
514 New function.
515 \enddiv
516
517 \div{mod}
518 \func{osStatus_t #osMemoryPoolFree (osMemoryPoolId_t mp_id, void * block)}
519 \func{osStatus &nbsp; osPoolFree (osPoolId pool_id, void * block)} 
520 \copybrief{osMemoryPoolFree}
521  - The function \b osMemoryPoolFree replaces the RTOS v1 function \b osPoolFree.
522  - The first parameter type \b osMemoryPoolId_t replaces the ROTS v1 type \b osPoolId.
523
524 \enddiv
525
526 \div{new}
527 \func{uint32_t #osMemoryPoolGetBlockSize (osMemoryPoolId_t mp_id)}
528 \none
529 \copybrief{osMemoryPoolGetBlockSize}
530 New function.
531 \enddiv
532
533 \div{new}
534 \func{uint32_t #osMemoryPoolGetCapacity (osMemoryPoolId_t mp_id)}
535 \none
536 \copybrief{osMemoryPoolGetCapacity}
537 New function.
538 \enddiv
539
540 \div{new}
541 \func{uint32_t #osMemoryPoolGetCount (osMemoryPoolId_t mp_id)}
542 \none
543 \copybrief{osMemoryPoolGetCount}
544 New function.
545 \enddiv
546
547 \div{new}
548 \func{uint32_t #osMemoryPoolGetSpace (osMemoryPoolId_t mp_id)}
549 \none
550 \copybrief{osMemoryPoolGetSpace}
551 New function.
552 \enddiv
553
554 \div{mod}
555 \func{osMemoryPoolId_t #osMemoryPoolNew (uint32_t block_count, uint32_t block_size, const osMemoryPoolAttr_t *attr)}
556 \func{osPoolId &nbsp; &nbsp; &nbsp; &nbsp; osPoolCreate (const osPoolDef_t * pool_def)}
557 \copybrief{osMemoryPoolGetSpace}
558  - The function \b osMemoryPoolNew replaces the RTOS v1 function \b osPoolCreate. 
559  - The return type changed to #osMemoryPoolId_t.
560  - Parameter list and parameter types have changed.
561
562 \enddiv
563
564
565 \if NEVER_ENABLE
566 =======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====
567 ======  Mail Queue  =======
568 \endif
569
570 \section mig_mailQueue Mail Queue
571 The <b>Mail Queue</b> RTOS v1 functions have been deprecated.
572 Use the functionality of the \ref CMSIS_RTOS_Message instead. 
573 Differences are listed under \ref mig_msgQueue.
574
575 \div{del}
576 \none
577 \func{void * osMailAlloc (osMailQId queue_id, uint32_t millisec)}
578 \n
579 Deprecated.
580 \enddiv
581
582 \div{del}
583 \none
584 \func{void * osMailCAlloc (osMailQId queue_id, uint32_t millisec)}
585 \n
586 Deprecated.
587 \enddiv
588
589 \div{del}
590 \none
591 \func{osMailQId osMailCreate (const osMailQDef_t *queue_def, osThreadId thread_id)}
592 \n
593 Deprecated.
594 \enddiv
595
596 \div{del}
597 \none
598 \func{osStatus osMailFree (osMailQId queue_id, void *mail)}
599 \n
600 Deprecated.
601 \enddiv
602
603 \div{del}
604 \none
605 \func{osEvent osMailGet (osMailQId queue_id, uint32_t millisec)}
606 \n
607 Deprecated.
608 \enddiv
609
610 \div{del}
611 \none
612 \func{osStatus osMailPut (osMailQId queue_id, void *mail)}
613 \n
614 Deprecated.
615 \enddiv
616
617
618 \if NEVER_ENABLE
619 =======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====
620 ======  Mutexes  =======
621 \endif
622
623 \section mig_mutex Mutexes
624 Refer to \ref CMSIS_RTOS_MutexMgmt for details.
625
626 \div{mod}
627 \func{osStatus_t #osMutexAcquire (osMutexId_t mutex_id, uint32_t millisec)}
628 \func{osStatus &nbsp; osMutexWait (osMutexId mutex_id, uint32_t millisec)}
629 \copybrief{osMutexAcquire}
630  - The function \b osMutexAcquire replaces the RTOS v1 function \b osMutexWait.
631  - Return type changed to \ref osStatus_t. 
632  - First parameter type changed to \ref osMutexId_t.
633
634 \enddiv
635
636 \div{mod}
637 \func{osStatus_t #osMutexDelete (osMutexId_t mutex_id)}
638 \func{osStatus  &nbsp; osMutexDelete (osMutexId mutex_id)}
639 \copybrief{osMutexDelete}
640  - The return type changed to \ref osStatus_t. 
641  - The parameter type changed to \ref osMutexId_t.
642
643 \enddiv
644
645 \div{new}
646 \func{osThreadId_t #osMutexGetOwner (osMutexId_t mutex_id)}
647 \none
648 \copybrief{osMutexGetOwner}
649 New function.
650 \enddiv
651
652 \div{mod}
653 \func{osMutexId_t #osMutexNew (const osMutexAttr_t *attr)}
654 \func{osMutexId &nbsp; osMutexCreate (const osMutexDef_t *mutex_def)}
655 \copybrief{osMutexNew}
656  - The function \b osMutexNew replaces the RTOS v1 function \b osMutexCreate.
657  - The return type changed to \ref osMutexId_t. 
658  - The parameter type changed to \ref osMutexAttr_t.
659
660 \enddiv
661
662 \div{mod}
663 \func{osStatus_t #osMutexRelease (osMutexId_t mutex_id)}
664 \func{osStatus  &nbsp; osMutexRelease (osMutexId mutex_id)}
665 \copybrief{osMutexRelease}
666  - The return type changed to \ref osStatus_t. 
667  - The parameter type changed to \ref osMutexId_t.
668
669 \enddiv
670
671
672 \if NEVER_ENABLE
673 =======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====
674 ======  SEMAPHORES  =======
675 \endif
676
677 \section mig_sem Semaphores
678 Refer to \ref CMSIS_RTOS_SemaphoreMgmt for details.
679
680 \div{new}
681 \func{osStatus_t #osSemaphoreAcquire (osSemaphoreId_t semaphore_id, uint32_t millisec)}
682 \none
683 \copybrief{osSemaphoreAcquire}
684 New function.
685 \enddiv
686
687 \div{mod}
688 \func{osStatus_t #osSemaphoreDelete (osSemaphoreId_t semaphore_id)}
689 \func{osStatus &nbsp; osSemaphoreDelete (osSemaphoreId semaphore_id)}
690 \copybrief{osSemaphoreDelete}
691  - The return type changed to #osStatus_t. 
692  - The parameter type has changed to #osSemaphoreId_t.
693
694 \enddiv
695
696 \div{new}
697 \func{uint32_t #osSemaphoreGetCount (osSemaphoreId_t semaphore_id)}
698 \none
699 \copybrief{osSemaphoreGetCount}
700 New function.
701 \enddiv
702
703 \div{mod}
704 \func{osSemaphoreId_t #osSemaphoreNew (uint32_t max_count, uint32_t initial_count, const osSemaphoreAttr_t *attr)}
705 \func{osSemaphoreId &nbsp; osSemaphoreCreate (const osSemaphoreDef_t *semaphore_def, int32_t count)}
706 \copybrief{osSemaphoreNew}
707  - The function \b osSemaphoreNew replaces the RTOS v1 function \b osSemaphoreCreate.
708  - The return type changed to #osSemaphoreId_t. 
709  - The parameter list and types have changed.
710
711 \enddiv
712
713 \div{mod}
714 \func{osStatus_t #osSemaphoreRelease (osSemaphoreId_t semaphore_id)}
715 \func{osStatus &nbsp; osSemaphoreRelease (osSemaphoreId semaphore_id)}
716 \copybrief{osSemaphoreRelease}
717  - The return type changed to #osStatus_t. 
718  - The parameter type has changed to #osSemaphoreId_t.
719
720 \enddiv
721
722 \div{del}
723 \none
724 \func{int32_t osSemaphoreWait (osSemaphoreId semaphore_id, uint32_t millisec)}
725 \n
726 Deprecated. 
727 \enddiv
728 */