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

📄 5timeslice.c

📁 结合三星的4510ARM处理器 和VXworks 操作系统,的几个源程序,有助于开发嵌入式系统和加深了解VXWorks操作系统
💻 C
字号:

/*如果没有特殊说明,windsh中直接运行的任务优先级默认是100,
	例子中任务优先级是101,保证比 sched 低*/
	
/*printf不是理想选择,因为它可能被阻塞,所以选择了 logMsg(),
	不会引起阻塞,除非logMsg队列已满*/	
	
/*  ->logFdSet 1    将定位logMsg()输出到虚拟控制输出台*/	
#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 10
#define ITER2 10
#define PRIORITY 101
#define TIMESLICE sysClkRateGet()
#define LONG_TIME 1000000

void sched()
{

	if(kernelTimeSlice(TIMESLICE)==OK)
		printf("\n\n\n\n\n\nTIMESLICE=%d second \n\n\n",TIMESLICE/60);
		
	if(taskSpawn("task1",PRIORITY,0x100,20000,taskOne,0,0,0,0,0,0,0,0,0,0)==ERROR)
		printf("taskSpawn task1 failed\n ");
		
	if(taskSpawn("task2",PRIORITY,0x100,20000,taskTwo,0,0,0,0,0,0,0,0,0,0)==ERROR)
		printf("taskSpawn task2 failed\n ");
		
	if(taskSpawn("task3",PRIORITY,0x100,20000,taskThree,0,0,0,0,0,0,0,0,0,0)==ERROR)
		printf("taskSpawn task3 failed\n ");



}

void taskOne()
{
	int i,j;
	
	for(i=0;i<ITER1;i++)
	{
		for(j=0;j<ITER2;j++)
			logMsg("this is task 1\n",0,0,0,0,0,0);
		for(j=0;j<LONG_TIME;j++);
			
			
	}
	
}

void taskTwo()
{
	int i,j;
	
	for(i=0;i<ITER1;i++)
	{
		for(j=0;j<ITER2;j++)
			logMsg("this is task 2\n",0,0,0,0,0,0);
		for(j=0;j<LONG_TIME;j++);
			
			
	}	
	
}
void taskThree()
{
	int i,j;
	
	for(i=0;i<ITER1;i++)
	{
		for(j=0;j<ITER2;j++)
			logMsg("this is task 3\n",0,0,0,0,0,0);
		for(j=0;j<LONG_TIME;j++);
			
			
	}	
	
}


⌨️ 快捷键说明

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