⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 round-robinsched.c

📁 嵌入式VxWorks开发所需典型例程源代码
💻 C
字号:
/* include files*/

#include "vxWorks.h"
#include "taskLib.h"
#include "kernelLib.h"
#include "sysLib.h"
#include "logLib.h"
#include "stdio.h"

/* function defined */
void taskOne(void);
void taskTwo(void);
void taskThree(void);

/* global varibles*/
#define ITER1  5
#define ITER2  1
#define PRIORITY 103
#define TIMESLICE 3
#define LONG_TIME 100

void sched(void)/*function to create three tasks*/
{
	int taskIdOne,taskIdTwo,taskIdThree;
	
	if( kernelTimeSlice(TIMESLICE)==OK)
	   printf("\n\n\n\t\t\tTIMESLICE=%dseconds\n\n",TIMESLICE);
	   
	if( taskIdOne=taskSpawn("task1", PRIORITY,0x100,20000,(FUNCPTR)taskOne,0,0,0,0,0,0,0,0,0,0)==ERROR)
	   printf("\nTaskSpawn taskone failed\n");
	if( taskIdTwo=taskSpawn("task2", PRIORITY,0x100,20000,(FUNCPTR)taskTwo,0,0,0,0,0,0,0,0,0,0)==ERROR)
	   printf("\nTaskSpawn tasktwo failed\n");
   	if( taskIdThree=taskSpawn("task3", PRIORITY,0x100,20000,(FUNCPTR)taskThree,0,0,0,0,0,0,0,0,0,0)==ERROR)
	   printf("\nTaskSpawn taskthree failed\n");
}

void taskOne(void)
{
	int i,j;
	for(i=0;i<ITER1;i++)
	{
		for(j=0;j<ITER2;j++)
		   logMsg("This is task 1111111\n",0,0,0,0,0,0);
		for(j=0;j<LONG_TIME;j++);/*Allow time to context switch*/
	}
}

void taskTwo(void)
{
	int i,j;
	for(i=0;i<ITER1;i++)
	{
		for(j=0;j<ITER2;j++)
		   logMsg("This is task 2222222\n",0,0,0,0,0,0);
		for(j=0;j<LONG_TIME;j++);/*Allow time to context switch*/
	}
}

void taskThree(void)
{
	int i,j;
	for(i=0;i<ITER1;i++)
	{
		for(j=0;j<ITER2;j++)
		   logMsg("this is task 3333333\n",0,0,0,0,0,0);
		for(j=0;j<LONG_TIME;j++);/*Allow time to context switch*/
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -