📄 msgqserver.c
字号:
#include "vxWorks.h"
#include "errno.h"
#include "msgQLib.h"
#include "stdio.h"
#include "taskLib.h"
#define TASK_PRI 254
#define NUM_MSGS 10
typedef struct
{
VOIDFUNCPTR routine;
int arg;
} MSG_REQUEST;
LOCAL MSG_Q_ID msgQId;
STATUS serverStart (void)
{
void msgQServer ();
if ((msgQId = msgQCreate (NUM_MSGS, sizeof (MSG_REQUEST), MSG_Q_PRIORITY))
== NULL)
return (ERROR);
if (taskSpawn ("tServer", TASK_PRI, 0, 5000, (FUNCPTR) msgQServer,
0,0,0,0,0,0,0,0,0,0) == ERROR)
{
msgQDelete (msgQId);
return (ERROR);
}
return (OK);
}
STATUS serverSend
(
VOIDFUNCPTR routine,
int arg
)
{
MSG_REQUEST msgRequest;
msgRequest.routine = routine;
msgRequest.arg = arg;
return (msgQSend (msgQId, (char *)&msgRequest, sizeof (MSG_REQUEST),
WAIT_FOREVER, MSG_PRI_NORMAL));
}
void msgQServer (void)
{
MSG_REQUEST msgRequest;
FOREVER
{
if (msgQReceive (msgQId, (char *) &msgRequest, sizeof (msgRequest),
WAIT_FOREVER) == ERROR)
{
printErr ("%s: msgQ failure\n", taskName(0));
return;
}
if (msgRequest.routine == NULL)
{
msgQDelete (msgQId);
return;
}
(*msgRequest.routine) (msgRequest.arg);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -