当前位置:文档之家› Vxworks任务创建编程学习代码

Vxworks任务创建编程学习代码

任务创建编程学习代码一此代码主要的是创建若干的任务,来学习任务的创建和删除.程序的结构是: 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 taskvoid 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<p;o++);}printf("%d\n",taskid0);printf("\n");//create task 1taskid1=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<p;o++);}printf("%d\n",taskid1);printf("\n");//create task 2taskid2=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<p;o++);}printf("%d\n",taskid2);printf("\n");//create task 3taskid3=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<p;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<p;o++);}printf("%d\n",loopid);printf("\n");printf("All Task Start!!!");//create semsem_id=semBCreate(SEM_Q_FIFO,SEM_EMPTY);printf("init Sem start....\n");for(i=0;i<50;i++){ printf("*");for(o=0;o<p;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");printf("\n");}//_________________________________________ if(taskRestart(taskid1)==ERROR){printf("task_1_Error Return!!!\n");printf("ErrId%d\n",errno);printf("\n");}else{printf("Ok Return!!!\n");printf("\n");}//_________________________________________ if(taskRestart(taskid2)==ERROR){printf("task_2_Error Return!!!\n");printf("ErrId%d\n",errno);printf("\n");}else{printf("Ok Return!!!\n");printf("\n");}//-----------------------------------------if(taskRestart(taskid3)==ERROR){printf("task_3_Error Return!!!\n");printf("ErrId%d\n",errno);printf("\n");}else{printf("Ok Return!!!\n");printf("\n");}//_________________________________________ taskDelay(3);printf("taskReStart stop....\n");}}void test0(void){// semTake(sem_id,,WAIT_FOREVER); printf("hello world 000!!!!\n");}void test1(void){printf("hello world 111!!!!\n");}void test2(void){printf("hello world 222!!!!\n");}void test3(void){printf("hello world 333!!!!\n");// semGive(sem_id);}void stop(void){ taskDelete(taskid0);taskDelete(taskid1);taskDelete(taskid2);taskDelete(taskid3);taskDelete(loopid);printf("All Task Delete !!!\n");}。

相关主题