Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table C-13 The table below shows the difference in API for semaphore management.

Panel
titleSemaphore API


µC/OS-II (os_sem.c)µC/OS-III (os_sem.c)Note
INT16U

...


OSSemAccept(

...


    OS_EVENT    *pevent);

...


(1)
OS_EVENT *

...


OSSemCreate(

...


    INT16U       cnt);
void

...

 
OSSemCreate(

...


    OS_SEM       *p_sem,

...


    CPU_CHAR     *p_name,

...


    OS_SEM_CTR    cnt,

...


    OS_ERR       *p_err);
(2)
OS_EVENT *

...


OSSemDel(

...


    OS_EVENT    *pevent,

...

INT8U opt,

...


    INT8U        opt,
    INT8U       *perr);
OS_OBJ_QTY,

...


OSSemDel(

...


    OS_SEM       *p_sem,

...


    OS_OPT        opt,

...


    OS_ERR       *p_err);

...


void

...


OSSemPend(

...


    OS_EVENT    *pevent,

...

INT32U timeout,

...


    INT32U       timeout,
    INT8U       *perr);
OS_SEM_CTR

...


OSSemPend(

...


    OS_SEM       *p_sem,

...


    OS_TICK       timeout,

...


    OS_OPT        opt,

...

 
    CPU_TS       *p_ts,

...


    OS_ERR       *p_err);
(3)

 

 

 

 

 

 

INT8U

OSSemPendAbort(

INT8U
OSSemPendAbort(
    OS_EVENT    *pevent,

...

INT8U opt,

...


    INT8U        opt,
    INT8U       *perr);
OS_OBJ_QTY

...


OSSemPendAbort(

...


    OS_SEM       *p_sem,

...


    OS_OPT        opt,

...


    OS_ERR       *p_err);

...


void

...


OSSemPost(

...


    OS_EVENT    *pevent);
void

...

 
OSSemPost(

...


    OS_SEM       *p_sem,

...


    OS_OPT        opt,

...


    OS_ERR       *p_err);

...


INT8U

...


OSSemQuery(

...


    OS_EVENT    *pevent,

...


    OS_SEM_DATA *p_sem_data);

...


(4)
void

...


OSSemSet(

...


    OS_EVENT    *pevent,

...

INT16U cnt,

...


    INT16U       cnt,
    INT8U       *perr);
void

...


OSSemSet(

...


    OS_SEM       *p_sem,

...


    OS_SEM_CTR    cnt,

...


    OS_ERR       *p_err);



Table C-13 Semaphore Management API

...

Panel

...

bgColor#f0f0f0

(1) In µC/OS-III, there is no “accept” API since this feature is built into

...

the OSSemPend()

...

 by specifying

...

the OS_OPT_PEND_NON_BLOCKING

...

 option.

...

(2) In µC/OS-II, OSSemCreate()

...

 returns the address of

...

an OS_EVENT, which is used as the “handle” to the semaphore. In µC/OS-III, the application must allocate storage for

...

an OS_SEM

...

 object, which serves the same purpose as

...

the OS_EVENT. The benefit in µC/OS-III is that it is not necessary to predetermine the number of semaphores at compile time.

...

(3) µC/OS-III returns additional information when a semaphore is signaled. The ISR or task that signals the semaphore takes a snapshot of the current timestamp and stores this in

...

the OS_SEM

...

 object signaled. The receiver of the signal therefore knows when the signal was sent.

...

(4) µC/OS-III does not provide query services, as they were rarely used.