标签:init target ati highlight ack logs func work lease
#include "vxWorks.h"
#include "semLib.h"
#include "taskLib.h"
#include "stdio.h"
#include "stdlib.h"
#include "sysLib.h"
#define STACK_SIZE 2000 /* Task Stack‘s size = 2000byte */
/*global variable*/
SEM_ID dataSemId; /*synchronism semphore*/
int tidSend; /*Send Task‘s Id*/
int tidReceive; /*Receive Task‘s Id*/
/*function declaration*/
void progStart();
void taskSend();
void taskReceive();
void SendInit();
void ReceiveInit();
void progStop();
/******************************************************************
*progStart - Start program
*it is used to create "Send Task" and "Receive Task", and begin to run
*Return: N/A
******************************************************************/
void progStart()
{
/*create semphore*/
dataSemId = semBCreate(SEM_Q_FIFO, SEM_EMPTY);
/*create Task*/
tidSend = taskSpawn("tSend", 200, 0, STACK_SIZE, (FUNCPTR)taskSend, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
tidReceive = taskSpawn("tReceive", 220, 0, STACK_SIZE, (FUNCPTR)taskReceive, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
return;
}
/*****************************************************************
*taskSend - Send data
*release semphore(dataSemId) every two second, used to simulate the receipt of data
*/
void taskSend()
{
/*Send Task‘s init*/
SendInit();
/* main Loop*/
while(true)
{
/*two second‘s delay*/
taskDelay(sysClkRateGet() * 2);
semGive(dataSemId);
}
return;
}
/****************************************************************
*taskReceive - receive data
*wait semphore(dataSemId)
*/
void taskReceive()
{
/*Receive Task‘s init*/
ReceiveInit();
/*main Loop*/
while(true)
{
/*wait semphore*/
semTake(dataSemId, WAIT_FOREVER);
printf("\nReceive a data");
}
return;
}
/****************************************************************
*SendInit - init send Task
*/
void SendInit()
{
printf("\nInitial Send Task");
return;
}
/*****************************************************************
*ReceiveInit - init Receive Task
*/
void ReceiveInit()
{
printf("\nInitial Receive Task");
return;
}
/****************************************************************
*progStop - stop program
*delete semphore,delete task, then stop program
*/
void progStop()
{
/*delete semphore*/
semDelete(dataSemId);
/*delete task*/
taskDelete(tidSend);
taskDelete(tidReceive);
printf("The End\n");
return;
}
PS:
tt():显示一个任务的函数栈的调用状态,参数为某个任务的name或者ID
ts():挂起某个任务。参数为某个任务的name或者ID
tr():恢复某个任务。参数为某个任务的name或者ID
td():删除某个任务。参数为某个任务的name或者ID
转载请注明原文链接,http://www.cnblogs.com/flyingcloude/p/6992048.html
标签:init target ati highlight ack logs func work lease
原文地址:http://www.cnblogs.com/flyingcloude/p/6992048.html