⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pipeserver.c

📁 Vxworks的培训教程,大家分享下啊,
💻 C
字号:
/* pipeServer.c - reads requests over pipe */#include "vxWorks.h"#include "pipeDrv.h"#include "taskLib.h"#include "ioLib.h"typedef struct	{	VOIDFUNCPTR routine;	int arg;	} MSG_REQUEST;#define TASK_PRI						254		 /* server priority */#define TASK_STACK 20000  /* server stack space */#define PIPE_NAME						"/pipe/server"#define NUM_MSGS						10int pipeFd;LOCAL void pipeServer ();/*************************************************** serverStart -- Initializes a server task to* execute functons at a low priority. Uses pipes as* the communication mechanism.** RETURNS: OK or ERROR on failure.*/STATUS serverStart (void)	{	/* Create the pipe device */	if (pipeDevCreate (PIPE_NAME, NUM_MSGS, 			sizeof (MSG_REQUEST)) == ERROR)		return (ERROR);		/* Open the pipe */	if ((pipeFd = open (PIPE_NAME, UPDATE, 0))			== ERROR)		return (ERROR);		/* Spawn the server task */	if (taskSpawn ("tServer", TASK_PRI, 0,						TASK_STACK, (FUNCPTR)pipeServer,						0,0,0,0,0,0,0,0,0,0) == ERROR)		{		close (pipeFd);		return (ERROR);		}		return (OK);	}/*************************************************** serverSend -- Sends a request to the server to* execute a function at the server's priority.** RETURNS: OK or ERROR on failure.*/STATUS serverSend 	(	VOIDFUNCPTR routine,	int arg	)	{	MSG_REQUEST msgRequest;	int status;	/* Initialize the message structure */	msgRequest.routine = routine;	msgRequest.arg = arg;	/* Send the message and return the results */	status = write (pipeFd, (char *)&msgRequest,						sizeof (MSG_REQUEST));	return ((status == sizeof (MSG_REQUEST)) ?				OK : ERROR);	}/*************************************************** pipeServer -- Server task which reads from a pipe* and executes the function passed in the* MSG_REQUEST data structure.**/LOCAL void pipeServer (void)	{	MSG_REQUEST msgRequest;	while (read (pipeFd, (char *)&msgRequest, 					 sizeof (MSG_REQUEST)) > 0)		(*msgRequest.routine) (msgRequest.arg);	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -