Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
.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
titleMutual 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
bgColor#f0f0f0

(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.