基于uCOSII最高优先级就绪任务查找表的构造C语言代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于uCOSII最高优先级就绪任务查找表的构造C语言代码
#include
#include
/*******************************************************************
* This is the production function of the Task prio select
* the regular is:
* + + + + + + + + + + + + + + + + + +
* bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 value
* x x x x x x x 1 0
* x x x x x x 1 0 1
* x x x x x 1 0 0 2
* ……
* 1 0 0 0 0 0 0 0 7
* 0 0 0 0 0 0 0 0 0
* if bit.i = 1 (i from the little to big of OSRdyGrp)
* -> the value of the array is i
* ->& the address of the number of i is:
* add1 + add2 ,add1 is the first part of the RdyGrp whose value is unknown * add2 is the second part of RdyGrp whose value is certain
* add1 = j * 2^(i + 1)
* j from 0 to 2^(7 - i)
* add2 = 2^i
********************************************************************/
void product(int *a)
{
// int a[256]; // initial an array
int i, j;
for (i = 0; i < 8; i++) // this is the flag bit of the OSRdyGrp
for (j = 0; j < (pow(2, (7-i))); j++)
{
a[(int) (pow(2, i + 1) * j + pow(2, i))] = i;
}
}
void PrintTbl(int * a)
{
int k;
printf("the MapTbl is:\n");
for ( k = 0; k < 256; k++)
{
if (k == 0)
{
a[k] = 0;
}
if ((k % 16 == 0) && (k != 0))
{
printf("\n");
}
printf("%d ", a[k]);
}
printf("\n");
}
void main(void)
{
int a[256];
product(a);
PrintTbl(a);
}