OSQCreate()
void OSQCreate (OS_Q *p_q,
CPU_CHAR *p_name,
OS_MSG_QTY max_qty,
OS_ERR *p_err)
File |
Called from |
Code enabled by |
os_q.c |
Task or startup code |
OS_CFG_Q_EN and OS_CFG_MSG_EN |
OSQCreate() creates a message queue. A message queue allows tasks or ISRs to send pointer-sized variables (messages) to one or more tasks. The meaning of the messages sent are application specific.
Arguments
p_q
is a pointer to the message queue control block. It is assumed that storage for the message queue will be allocated in the application. The user will need to declare a “global” variable as follows, and pass a pointer to this variable to OSQCreate():
OS_Q MyMsgQ;
p_name
is a pointer to an ASCII string used to name the message queue. The name can be displayed by debuggers or µC/Probe.
msg_qty
indicates the maximum size of the message queue (must be non-zero). If the user intends to not limit the size of the queue, simply pass a very large number. Of course, if there are not enough OS_MSGs in the pool of OS_MSGs, the post call (i.e., OSQPost()) will simply fail and an error code will indicate that there are no more OS_MSGs to use.
p_err
is a pointer to a variable that is used to hold an error code:
Returned Value
None
Notes/Warnings
Queues must be created before they are used.
Example
OS_Q CommQ;
void main (void) { OS_ERR err;
OSInit(&err); /* Initialize µC/OS-III */ : : OSQCreate(&CommQ, “Comm Queue”, 10, &err); /* Create COMM Q */ /* Check “err” */ : : OSStart(); /* Start Multitasking */ } |