goodprog.c

来自「Vxworks的培训教程,大家分享下啊,」· C语言 代码 · 共 62 行

C
62
字号
/* goodProg.c - fixes badProg.c */

#include "vxWorks.h"
#include "semLib.h"
#include "stdio.h"
#include "taskLib.h"
#include "sysLib.h"

void foo(char flag);
LOCAL SEM_ID semId;

STATUS startFoo (char *pPrintStr)
	{
	char flag;

	flag = *pPrintStr;

	if (semId == NULL)
		{
		
		if ((semId = semMCreate (SEM_Q_PRIORITY |
							SEM_DELETE_SAFE |
							SEM_INVERSION_SAFE)) == NULL)
			{
			perror ("semMCreate failed");
			return ERROR;
			}
		}

	if (taskSpawn ("tFoo", 200, 0, 5000, 
						(FUNCPTR) foo, flag,
						0,0,0,0,0,0,0,0,0) == ERROR)
		{
		perror ("taskSpawn failed");
		return (ERROR);
		}
	
	taskDelay (sysClkRateGet () * 5);

	return (OK);
	}


void foo (char flag)
	{
	FOREVER
		{
		if (semTake (semId, WAIT_FOREVER) == ERROR)
			{
			perror ("semTake failed");
			return;
			}

		if (flag == 'y')
			printf ("Critical nonsense...\n");

		semGive (semId);

		taskDelay (sysClkRateGet() * 3);
		}
	}

⌨️ 快捷键说明

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