Vxworks任务创建编程学习代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
任务创建编程学习代码一
此代码主要的是创建若干的任务,来学习任务的创建和删除.
程序的结构是: start函数:任务创建函数
stop函数:任务删除函数
其它为任务
请大家仔细分析代码,理解任务内务的创建和删除.本代码是在tornado2.0版本调试成功. 如有疑问联系作者jdvxworks 邮箱:foxqs@
/*********************************
* date:2006.7.10 time:16.08
* maker: jdvxworks
* aim: create 4 task
* list: task0 task1 task2 task3
* change:_____________________
*********************************/
#include "stdio.h"
#include "taskLib.h"
#include "vxWorks.h"
//#include "semBLib.h"
int taskid0;
int taskid1;
int taskid2;
int taskid3;
int loopid;
SEM_ID sem_id;
STATUS Err;
void start(void);
void test0(void);
void test1(void);
void test2(void);
void test3(void);
void stop(void);
void taskloop(void);
//start init task
void start(void)
{
int i,o;
long p=9999999+100000;
taskid0=taskSpawn("task0",200,0x100,1000,(FUNCPTR)test0,0,0,0,0,0,0,0,0, 0,0);
printf("init task0 start....\n");
for(i=0;i<50;i++)
{ printf("*");
for(o=0;o
;
}
printf("%d\n",taskid0);
printf("\n");
//create task 1
taskid1=taskSpawn("task1",200,0x100,1000,(FUNCPTR)test1,0,0,0,0,0,0,0,0, 0,0);
printf("init task1 start....\n");
for(i=0;i<50;i++)
{ printf("*");
for(o=0;o
;
}
printf("%d\n",taskid1);
printf("\n");
//create task 2
taskid2=taskSpawn("task2",200,0x100,1000,(FUNCPTR)test2,0,0,0,0,0,0,0,0, 0,0);
printf("init task2 start....\n");
for(i=0;i<50;i++)
{ printf("*");
for(o=0;o
;
}
printf("%d\n",taskid2);
printf("\n");
//create task 3
taskid3=taskSpawn("task3",200,0x100,1000,(FUNCPTR)test3,0,0,0,0,0,0,0,0, 0,0);
printf("init task3 start....\n");
for(i=0;i<50;i++)
{ printf("*");
for(o=0;o
;
}
printf("%d\n",taskid3);
printf("\n");
loopid=taskSpawn("taskloopT",201,0x100,1000,(FUNCPTR)taskloop,0,0,0,0, 0,0,0,0,0,0);
printf("init taskloopT start....\n");
for(i=0;i<50;i++)
{ printf("*");
for(o=0;o
;
}
printf("%d\n",loopid);
printf("\n");
printf("All Task Start!!!");
//create sem
sem_id=semBCreate(SEM_Q_FIFO,SEM_EMPTY);
printf("init Sem start....\n");
for(i=0;i<50;i++)
{ printf("*");
for(o=0;o
;
}
printf("\n");
printf("All Task Start!!!");
}
//start task over!!
void taskloop(void)
{
while(1)
{
taskDelay(3);
printf("taskReStart start....\n");
// semTake(sem_id,WAIT_FOREVER);
// semGive(sem_id);
//_________________________________________
if(taskRestart(taskid0)==ERROR)
{
printf(" task_0_Error Return!!!\n");
printf("ErrId:%f\n",errno);
printf("\n");
}
else
{
printf("Ok Return!!!\n");