|
这个代码运行起来一直没有看到理论中的那种task1,task2,task3轮流运行一段时间的效果:
- #include "vxWorks.h"
- #include "taskLib.h"
- #include "kernelLib.h"
- #include "sysLib.h"
- #include "logLib.h"
- void taskOne(void);
- void taskTwo(void);
- void taskThree(void);
- #define ITER1 5
- #define ITER2 10
- #define PRIORITY 50
- #define TIMESLICE (float)sysClkRateGet()/100
- #define LONG_TIME 1000000
- void sched(void)
- {
- int taskIdOne, taskIdTwo, taskIdThree;
- int i, j;
- if(kernelTimeSlice(TIMESLICE) == OK)
- printf("\n\n\n\n\t\t\tTIMESLICE = %f secondes\n\n\n", TIMESLICE/60);
- else
- printf("\n\n\n\n\t\t\tTIMESLICE SET ERROR!\n\n\n");
- if((taskIdOne =
- taskSpawn("task1", PRIORITY, 0x100, 2000, taskOne,
- 0,0,0,0,0,0,0,0,0,0)) == ERROR);
- printf("taskSpawn taskOne failed\n");
-
- if((taskIdTwo =
- taskSpawn("task2", PRIORITY, 0x100, 2000, taskTwo,
- 0,0,0,0,0,0,0,0,0,0)) == ERROR);
- printf("taskSpawn taskTwo failed\n");
- if((taskIdThree =
- taskSpawn("task3", PRIORITY, 0x100, 2000, taskThree,
- 0,0,0,0,0,0,0,0,0,0)) == ERROR);
- printf("taskSpawn taskThree failed\n");
-
- }
- void taskOne(void)
- {
- int i, j;
- for(i = 0;i < ITER1;i++)
- {
- for(j = 0; j < ITER2; j++)
- logMsg("\n", 0, 0, 0, 0, 0, 0);
- for(j = 0; j < LONG_TIME; j++);
- }
- }
- void taskTwo(void)
- {
- int i, j;
- for(i = 0;i < ITER1;i++)
- {
- for(j = 0; j < ITER2; j++)
- logMsg("\n", 0, 0, 0, 0, 0, 0);
- for(j = 0; j < LONG_TIME; j++);
- }
- }
- void taskThree(void)
- {
- int i, j;
- for(i = 0;i < ITER1;i++)
- {
- for(j = 0; j < ITER2; j++)
- logMsg("\n", 0, 0, 0, 0, 0, 0);
- for(j = 0; j < LONG_TIME; j++);
- }
- }
复制代码
运行结果如下:
而且sched在执行taskspawn的时候,还出现了taskspawn failed错误,既然taskspawn错误了,为何最终3个还是生成了、执行了? |
|