📄 sema4new.c
字号:
#include "vxWorks.h"
#include "stdio.h"
#include "stdlib.h"
#include "taskLib.h"
#include "semLib.h"
int tidStart;
int tidEnd;
int g;
void helloStart();
void helloEnd();
STATUS helloStop();
STATUS tHelloStart();
SEM_ID semHello;
STATUS tHelloStart()
{
/* Spawn start Task */
semHello=semMCreate( SEM_Q_PRIORITY);
if(semHello==NULL)
{
printf("Something is wrong when create semaphore\n");
return ERROR;
}
tidStart = taskSpawn(NULL, 80, 0, 2000, (FUNCPTR)helloStart,
0,0,0,0,0,0,0,0,0,0);
if(tidStart==NULL)
{
printf("Something is wrong when create taskStart\n");
return ERROR;
}
/* Spawn end Task */
tidEnd = taskSpawn(NULL, 80, 0, 2000, (FUNCPTR)helloEnd,
0,0,0,0,0,0,0,0,0,0);
if(tidEnd==NULL)
{
printf("Something is wrong when create taskEnd\n");
return ERROR;
}
return (OK);
}
void helloStart()
{
for(;;)
{
semTake(semHello, WAIT_FOREVER);
g = 1;
taskDelay (sysClkRateGet ( ) / 3);
printf("task A: g = %d\n", g);
semGive(semHello);
taskDelay (sysClkRateGet ( ) / 3);
}
}
void helloEnd()
{
for(;;)
{
semTake(semHello, WAIT_FOREVER);
g = 2;
taskDelay (sysClkRateGet ( ) / 2);
printf("task B: g = %d\n", g);
semGive(semHello);
taskDelay (sysClkRateGet ( ) / 2);
}
}
STATUS helloStop()
{
/* delete tasks */
taskDelete(tidStart);
taskDelete (tidEnd);
return(OK);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -