Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Unable to render {include} The included page could not be found.
Unable to render {include} The included page could not be found.

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:

OS_ERR_NONE
if the call is successful and the mutex has been created.
OS_ERR_CREATE_ISR
if OS_CFG_CALLED_FROM_ISR_CHK_EN set to 1 in os_cfg.h: if attempting to create the message queue from an ISR.
OS_ERR_OBJ_PTR_NULL
if OS_CFG_ARG_CHK_EN is set to 1 in os_cfg.h: if p_q is a NULL pointer.
OS_ERR_Q_SIZE
if OS_CFG_ARG_CHK_EN is set to 1 in os_cfg.h: if the size specified is 0.
OS_ERR_ILLEGAL_CREATE_RUN_TIME
if OS_SAFETY_CRITICAL_IEC61508 is defined: you called this after calling OSSafetyCriticalStart() and thus you are no longer allowed to create additional kernel objects.

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 */

}

  • No labels