基于uCOSII最高优先级就绪任务查找表的构造C语言代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);

}

相关文档
最新文档