UCOS之任务控制块练习

时间:2021-06-22 08:01:02
#include <stdio.h>
#include <string.h>


typedef struct tcb{ //定义了结构体,并且用别名 TCB代表struct tcb
char *code_name;
int p;
int v_num;
void (*fun)();

}TCB;

void function1()
{
char i;
for(i=0;i<10;i++)
printf("11111111\n");
}

void function2()
{
char i;
for(i=0;i<10;i++)
printf("2222222\n");
}

void function3()
{
char i;
for(i=0;i<10;i++)
printf("333333\n");
}

TCB creat(char *name,int pp,int vnum,void (*fun)()) //创建结构体类型的函数creat()
{ //因为后面用到的tabTbl[]数组的类型都是TCB型的,且tabTbl[0] = creat("F1",1,2,function1);
//所以函数creat()以及它的返回值都应该是TCB类型的
TCB tcb;
tcb.code_name = name;
tcb.p = pp;
tcb.v_num = vnum;
tcb.fun = fun;
return tcb;
}

main()
{
char code_name[10];
int t=0,i;
TCB tabTbl[3]; //这个是一个结构体的数组,有3个元素,每个元素都是一个结构体
tabTbl[0] = creat("F1",2,1,function1);
tabTbl[1] = creat("F2",2,4,function2);
tabTbl[2] = creat("F3",4,5,function3);
printf("Input codename:");
scanf("%s",code_name);
for(i=0;i<3;i++)
{

if(strcmp(tabTbl[i].code_name,code_name)==0)
{//比较两个数tabTbl[i].code_name和code_name是否相同,相当返回0,不同返回其它值
tabTbl[i].fun(); //调用任务控制里所指向的用户程序
t=1;
}

if((i==2)&&(t==0))printf("No %s\n",code_name);
//getchar();
}
getchar();
}