vxworks任务调度学习代码..doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
vxworks任务调度学习代码.

时间片轮转调度 我们来看一个具体的例子,在这个程序中,用户启动了三个优先级相同的任务,并通过对kernelTimeSlice(TIMESLICE)的调用启动了时间片轮转调度。 例1:时间片轮转调度 /* includes */ #include vxWorks.h #include taskLib.h #include kernelLib.h #include sysLib.h #include stdio.h /* function prototypes */ void taskOne(void); void taskTwo(void); void taskThree(void); /* globals */ ? #define ITER1 100 ? #define ITER2 10 ? #define PRIORITY 101 ? #define TIMESLICE sysClkRateGet() ? #define LONG_TIME 0xFFFFFFL void sched(void) /* function to create the three tasks */ ? { ? ? int taskIdOne, taskIdTwo, taskIdThree; ? ? if (kernelTimeSlice(TIMESLICE) == OK) ? ? /* turn round-robin on */ ? ??? printf(\n\n\n\n\t\t\tTIMESLICE = %d seconds\n\n\n, TIMESLICE / 60); ? /* spawn the three tasks */ ? ? if ((taskIdOne = taskSpawn(task1, PRIORITY, 0x100, 20000, (FUNCPTR)taskOne, ? ??? 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) == ERROR) ? ??? printf(taskSpawn taskOne failed\n); ? ? if ((taskIdTwo = taskSpawn(task2, PRIORITY, 0x100, 20000, (FUNCPTR)taskTwo, ? ??? 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) == ERROR) ? ??? printf(taskSpawn taskTwo failed\n); ? ? if ((taskIdThree = taskSpawn(task3, PRIORITY, 0x100, 20000, (FUNCPTR) ? ??? taskThree, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) == ERROR) ? ??? printf(taskSpawn taskThree failed\n); ? }?? void taskOne(void) ? { ? ? unsigned int i, j; ? ? for (i = 0; i ITER1; i++) ? ? { ? ??? for (j = 0; j ITER2; j++) ? ????? printf(task1\n); ? ??? /* log messages */ ? ??? for (j = 0; j LONG_TIME; j++) ? ????? ; ? ??? /* allow time for context switch */ ? ? } ? } void taskTwo(void) ? { ? ? unsigned int i, j; ? ? for (i = 0; i ITER1; i++) ? ? { ? ??? for (j = 0; j ITER2; j++) ? ????? printf(task2\n); ? ??? /* log messages */ ? ??? for (j = 0; j LONG_TIME; j++) ? ????? ; ? ??? /* allow time for context switch */ ? ? } ? } ? void taskThree(void) ? { ? ? unsigned int i, j; ? ? for (i = 0; i ITER1; i++) ? ? { ? ??? for (j = 0; j ITER2; j++) ? ????? printf(task3\n); ? ??? /* l

文档评论(0)

xznh + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档