📄 pise.c
字号:
/* */
/* HISTORY */
/* */
/* DATE REMARKS */
/* */
/* 03-01-1993 Created initial version 1.0 */
/* 04-19-1993 Verified version 1.0 */
/* 03-01-1994 Modified function interface, */
/* resulting in version 1.1 */
/* */
/* 03-18-1994 Verified version 1.1 */
/* */
/*************************************************************************/
STATUS PISE_Send_To_Front_Of_Pipe(NU_PIPE *pipe_ptr, VOID *message,
UNSIGNED size, UNSIGNED suspend)
{
PI_PCB *pipe;
STATUS status;
/* Move input pipe pointer into internal pointer. */
pipe = (PI_PCB *) pipe_ptr;
/* Determine if there is an error with the pipe pointer. */
if (pipe == NU_NULL)
/* Indicate that the pipe pointer is invalid. */
status = NU_INVALID_PIPE;
else if (pipe -> pi_id != PI_PIPE_ID)
/* Indicate that the pipe pointer is invalid. */
status = NU_INVALID_PIPE;
else if (message == NU_NULL)
/* Indicate that the pointer to the message is invalid. */
status = NU_INVALID_POINTER;
else if (size == 0)
/* Indicate that the message size is invalid */
status = NU_INVALID_SIZE;
else if ((pipe -> pi_fixed_size) && (size != pipe -> pi_message_size))
/* Indicate that the message size is invalid. */
status = NU_INVALID_SIZE;
else if ((!pipe -> pi_fixed_size) && (size > pipe -> pi_message_size))
/* Indicate that the message size is invalid. */
status = NU_INVALID_SIZE;
else if ((suspend) && (TCCE_Suspend_Error()))
/* Indicate that suspension is only valid from a non-task thread. */
status = NU_INVALID_SUSPEND;
else
/* All the parameters are okay, call the actual function to send
a message to a pipe. */
status = PIS_Send_To_Front_Of_Pipe(pipe_ptr, message, size, suspend);
/* Return completion status. */
return(status);
}
/*************************************************************************/
/* */
/* FUNCTION */
/* */
/* PISE_Broadcast_To_Pipe */
/* */
/* DESCRIPTION */
/* */
/* This function performs error checking on the parameters supplied */
/* to the broadcast message to pipe function. */
/* */
/* AUTHOR */
/* */
/* Accelerated Technology, Inc. */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* CALLS */
/* */
/* PIS_Broadcast_To_Pipe Actual broadcast message to */
/* pipe function */
/* TCCE_Suspend_Error Check suspend validity */
/* */
/* INPUTS */
/* */
/* pipe_ptr Pipe control block pointer */
/* message Pointer to message to send */
/* size Size of message to send */
/* suspend Suspension option if full */
/* */
/* OUTPUTS */
/* */
/* NU_INVALID_PIPE Invalid pipe pointer */
/* NU_INVALID_POINTER Invalid message pointer */
/* NU_INVALID_SIZE Invalid message size */
/* NU_INVALID_SUSPEND Invalid suspend request */
/* */
/* HISTORY */
/* */
/* DATE REMARKS */
/* */
/* 03-01-1993 Created initial version 1.0 */
/* 04-19-1993 Verified version 1.0 */
/* 03-01-1994 Modified function interface, */
/* resulting in version 1.1 */
/* */
/* 03-18-1994 Verified version 1.1 */
/* */
/*************************************************************************/
STATUS PISE_Broadcast_To_Pipe(NU_PIPE *pipe_ptr, VOID *message,
UNSIGNED size, UNSIGNED suspend)
{
PI_PCB *pipe;
STATUS status;
/* Move input pipe pointer into internal pointer. */
pipe = (PI_PCB *) pipe_ptr;
/* Determine if there is an error with the pipe pointer. */
if (pipe == NU_NULL)
/* Indicate that the pipe pointer is invalid. */
status = NU_INVALID_PIPE;
else if (pipe -> pi_id != PI_PIPE_ID)
/* Indicate that the pipe pointer is invalid. */
status = NU_INVALID_PIPE;
else if (message == NU_NULL)
/* Indicate that the pointer to the message is invalid. */
status = NU_INVALID_POINTER;
else if (size == 0)
/* Indicate that the message size is invalid */
status = NU_INVALID_SIZE;
else if ((pipe -> pi_fixed_size) && (size != pipe -> pi_message_size))
/* Indicate that the message size is invalid. */
status = NU_INVALID_SIZE;
else if ((!pipe -> pi_fixed_size) && (size > pipe -> pi_message_size))
/* Indicate that the message size is invalid. */
status = NU_INVALID_SIZE;
else if ((suspend) && (TCCE_Suspend_Error()))
/* Indicate that suspension is only valid from a non-task thread. */
status = NU_INVALID_SUSPEND;
else
/* All the parameters are okay, call the actual function to broadcast
a message to a pipe. */
status = PIS_Broadcast_To_Pipe(pipe_ptr, message, size, suspend);
/* Return completion status. */
return(status);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -