.NamePtr
This is a pointer to an ASCII string used to provide a name to the The table below shows the difference in API for mutual exclusion semaphore . The ASCII string can have any length as long as it is NUL
terminated.
.PendList.NbrEntries
Each mutual exclusion semaphore contains a list of tasks waiting for the semaphore to be released. The variable represents the number of entries in the wait list.
.OwnerOriginalPrio
This variable holds the original priority of the task that owns the mutual exclusion semaphore.
.OwnerTCBPtr->Prio
Dereferencing the pointer to the OS_TCB
of the mutual exclusion semaphore owner allows the application to determine whether a task priority was changed.
.OwnerNestingCtr
This variable indicates how many times the owner of the mutual exclusion semaphore requested the semaphore.
.TS
This variable contains the timestamp of when the mutual exclusion semaphore was last releasedmanagement.
Panel |
---|
title | Mutual Exclusion Semaphores API |
---|
|
µ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) |
|
Panel |
---|
|
(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. |