Versions Compared

Key

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

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

Panel
titleMessage 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      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,

...

 
     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      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)

...

Table C-12 Message Queue Management API

...



Panel
bgColor#f0f0f0

(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

...

 

...

µC/OS-II (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);

...