📄 quse.c
字号:
/* OUTPUTS */
/* */
/* NU_INVALID_QUEUE Invalid queue pointer */
/* NU_INVALID_POINTER Invalid message pointer */
/* NU_INVALID_SIZE Invalid message size */
/* NU_INVALID_SUSPEND Invalid suspension request */
/* */
/* HISTORY */
/* */
/* NAME DATE REMARKS */
/* */
/* W. Lamie 03-01-1993 Created initial version 1.0 */
/* D. Lamie 04-19-1993 Verified version 1.0 */
/* W. Lamie 03-01-1994 Modified function interface, */
/* resulting in version 1.1 */
/* R. Pfaff - */
/* D. Lamie 03-18-1994 Verified version 1.1 */
/* */
/*************************************************************************/
STATUS QUSE_Send_To_Front_Of_Queue(NU_QUEUE *queue_ptr, VOID *message,
UNSIGNED size, UNSIGNED suspend)
{
QU_QCB *queue;
STATUS status;
/* Move input queue pointer into internal pointer. */
queue = (QU_QCB *) queue_ptr;
/* Determine if there is an error with the queue pointer. */
if (queue == NU_NULL)
/* Indicate that the queue pointer is invalid. */
status = NU_INVALID_QUEUE;
else if (queue -> qu_id != QU_QUEUE_ID)
/* Indicate that the queue pointer is invalid. */
status = NU_INVALID_QUEUE;
else if (message == NU_NULL)
/* Indicate that the pointer to the message is invalid. */
status = NU_INVALID_POINTER;
else if ((queue -> qu_fixed_size) && (size != queue -> qu_message_size))
/* Indicate that the message size is invalid. */
status = NU_INVALID_SIZE;
else if ((!queue -> qu_fixed_size) && (size > queue -> qu_message_size))
/* Indicate that the message size is invalid. */
status = NU_INVALID_SIZE;
else if ((suspend) && (TCCE_Suspend_Error()))
/* Indicate that the suspension is only allowed from a task thread. */
status = NU_INVALID_SUSPEND;
else
/* All the parameters are okay, call the actual function to send
a message to a queue. */
status = QUS_Send_To_Front_Of_Queue(queue_ptr, message, size,
suspend);
/* Return completion status. */
return(status);
}
/*************************************************************************/
/* */
/* FUNCTION */
/* */
/* QUSE_Broadcast_To_Queue */
/* */
/* DESCRIPTION */
/* */
/* This function performs error checking on the parameters supplied */
/* to the broadcast message to queue function. */
/* */
/* AUTHOR */
/* */
/* William E. Lamie, Accelerated Technology, Inc. */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* CALLS */
/* */
/* QUS_Broadcast_To_Queue Actual broadcast message */
/* to queue function */
/* TCCE_Suspend_Error Check suspend validity */
/* */
/* INPUTS */
/* */
/* queue_ptr Queue control block pointer */
/* message Pointer to message to send */
/* size Size of message to send */
/* suspend Suspension option if full */
/* */
/* OUTPUTS */
/* */
/* NU_INVALID_QUEUE Invalid queue pointer */
/* NU_INVALID_POINTER Invalid message pointer */
/* NU_INVALID_SIZE Invalid message size */
/* NU_INVALID_SUSPEND Invalid suspend request */
/* */
/* HISTORY */
/* */
/* NAME DATE REMARKS */
/* */
/* W. Lamie 03-01-1993 Created initial version 1.0 */
/* D. Lamie 04-19-1993 Verified version 1.0 */
/* W. Lamie 03-01-1994 Modified function interface, */
/* resulting in version 1.1 */
/* R. Pfaff - */
/* D. Lamie 03-18-1994 Verified version 1.1 */
/* */
/*************************************************************************/
STATUS QUSE_Broadcast_To_Queue(NU_QUEUE *queue_ptr, VOID *message,
UNSIGNED size, UNSIGNED suspend)
{
QU_QCB *queue;
STATUS status;
/* Move input queue pointer into internal pointer. */
queue = (QU_QCB *) queue_ptr;
/* Determine if there is an error with the queue pointer. */
if (queue == NU_NULL)
/* Indicate that the queue pointer is invalid. */
status = NU_INVALID_QUEUE;
else if (queue -> qu_id != QU_QUEUE_ID)
/* Indicate that the queue pointer is invalid. */
status = NU_INVALID_QUEUE;
else if (message == NU_NULL)
/* Indicate that the pointer to the message is invalid. */
status = NU_INVALID_POINTER;
else if ((queue -> qu_fixed_size) && (size != queue -> qu_message_size))
/* Indicate that the message size is invalid. */
status = NU_INVALID_SIZE;
else if ((!queue -> qu_fixed_size) && (size > queue -> qu_message_size))
/* Indicate that the message size is invalid. */
status = NU_INVALID_SIZE;
else if ((suspend) && (TCCE_Suspend_Error()))
/* Indicate that the suspension is only allowed from a task thread. */
status = NU_INVALID_SUSPEND;
else
/* Broadcast a message to a queue. */
status = QUS_Broadcast_To_Queue(queue_ptr, message, size, suspend);
/* Return completion status. */
return(status);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -