/
Message Queues API Changes

Message Queues API Changes

This table shows the difference in API for message-queue management.

Message Queues API
µC/OS-II (os_q.c)µC/OS-III (os_q.c)Note
void * 
 OSQAccept( 
     OS_EVENT  *pevent, 
     INT8U     *perr);

(1)
OS_EVENT * 
 OSQCreate( 
     void     **start, 
     INT16U     size);
void 
 OSQCreate( 
     OS_Q         *p_q, 
     CPU_CHAR     *p_name, 
     OS_MSG_QTY    max_qty, 
     OS_ERR       *p_err);
(2)
OS_EVENT * 
 OSQDel( 
     OS_EVENT  *pevent, 
     INT8U      opt, 
     INT8U     *perr);
OS_OBJ_QTY, 
 OSQDel( 
     OS_Q         *p_q, 
     OS_OPT        opt, 
     OS_ERR       *p_err);

INT8U 
 OSQFlush( 
     OS_EVENT  *pevent);
OS_MSG_QTY 
 OSQFlush( 
     OS_Q         *p_q, 
     OS_ERR       *p_err);

void * 
 OSQPend( 
     OS_EVENT  *pevent, 
     INT32U     timeout, 
     INT8U     *perr);
void * 
 OSQPend( 
     OS_Q         *p_q, 
     OS_MSG_SIZE  *p_msg_size, 
     OS_TICK       timeout, 
     OS_OPT        opt,  
     CPU_TS       *p_ts, 
     OS_ERR       *p_err);
(3)
INT8U 
 OSQPendAbort( 
     OS_EVENT  *pevent, 
     INT8U      opt, 
     INT8U     *perr);
OS_OBJ_QTY 
 OSQPendAbort( 
     OS_Q         *p_q, 
     OS_OPT        opt, 
     OS_ERR       *p_err);

INT8U 
 OSQPost( 
     OS_EVENT  *pevent, 
     void      *pmsg);
void 
 OSQPost( 
     OS_Q         *p_q, 
     void         *p_void, 
     OS_MSG_SIZE   msg_size, 
     OS_OPT        opt, 
     OS_ERR       *p_err);
(4)
INT8U 
 OSQPostFront( 
     OS_EVENT  *pevent, 
     void      *pmsg);


INT8U 
 OSQPostOpt( 
     OS_EVENT  *pevent, 
     void      *pmsg, 
     INT8U      opt);

(4)
INT8U 
 OSQQuery( 
     OS_EVENT  *pevent, 
     OS_Q_DATA *p_q_data);

(5)

(1) In µC/OS-III, there is no “accept” API as this feature is built into the OSQPend() by specifying the OS_OPT_PEND_NON_BLOCKING option.

(2) In µC/OS-II, OSQCreate() returns the address of an OS_EVENT, which is used as the “handle” to the message queue. In µC/OS-III, the application must allocate storage for an OS_Q object, which serves the same purpose as the OS_EVENT. The benefit in µC/OS-III is that it is not necessary to predetermine at compile time, the number of message queues.

(3) µC/OS-III returns additional information when a message queue is posted. Specifically, the sender includes the size of the message and takes a snapshot of the current timestamp and stores it in the message. The receiver of the message therefore knows when the message was posted.

(4) In µC/OS-III, OSQPost() offers a number of options that replaces the three post functions provided in µC/OS-II.

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


Related content

API Changes
More like this
OSQPost
Read with this
Message Queue Management
Message Queue Management
More like this
Event Flags API Changes
Event Flags API Changes
Read with this
Task Management API Changes
Task Management API Changes
More like this
Mutual Exclusion Semaphores API Changes
Mutual Exclusion Semaphores API Changes
Read with this