Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

Unable to render {include} The included page could not be found.
Unable to render {include} The included page could not be found.

Mutual Exclusion Semaphores

Table C-11 shows the difference in API for mutual exclusion semaphore management.

 

µC/OS-II (os_mutex.c)

µC/OS-III (os_mutex.c)

Note

BOOLEAN

OSMutexAccept(

OS_EVENT *pevent,

INT8U *perr);

 

(1)

OS_EVENT *

OSMutexCreate(

INT8U prio,

INT8U *perr);

void

OSMutexCreate(

OS_MUTEX *p_mutex,

CPU_CHAR *p_name,

OS_ERR *p_err);

(2)

OS_EVENT *

OSMutexDel(

OS_EVENT *pevent,

INT8U opt,

INT8U *perr);

void

OSMutexDel(

OS_MUTEX *p_mutex,

OS_OPT opt,

OS_ERR *p_err);

 

void

OSMutexPend(

OS_EVENT *pevent,

INT32U timeout,

INT8U *perr);

void

OSMutexPend(

OS_MUTEX *p_mutex,

OS_TICK timeout,

OS_OPT opt,

CPU_TS *p_ts,

OS_ERR *p_err);

(3)

 

OS_OBJ_QTY

OSMutexPendAbort(

OS_MUTEX *p_mutex,

OS_OPT opt,

OS_ERR *p_err);

 

INT8U

OSMutexPost(

OS_EVENT *pevent);

void

OSMutexPost(

OS_MUTEX *p_mutex,

OS_OPT opt,

OS_ERR *p_err);

 

INT8U

OSMutexQuery(

OS_EVENT *pevent,

OS_MUTEX_DATA *p_mutex_data);

 

(4)

 

    1. Mutual Exclusion Semaphore Management API
      1. In µC/OS-III, there is no “accept” API, since this feature is built into the OSMutexPend() by specifying the OS_OPT_PEND_NON_BLOCKING option.
      2. In µC/OS-II, OSMutexCreate() returns the address of an OS_EVENT, which is used as the “handle” to the message mailbox. In µC/OS-III, the application must allocate storage for an OS_MUTEX, 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 mutual-exclusion semaphores at compile time.
      3. µC/OS-III returns additional information when a mutex is released. The releaser takes a snapshot of the current time stamp and stores it in the OS_MUTEX. The new owner of the mutex therefore knows when the mutex was released.
      4. µC/OS-III does not provide query services as they were rarely used.
  • No labels