uc/os-ii中 osunmaptbl在哪个文件中
1个回答
2017-06-06
展开全部
有256个元素的数组是通过任务就绪表找到就绪任务中优先级最高的任务所用到的数组。代码如下:
y=OSUnMapTal[OSRdyGrp];//获得优先级别的D5、D4、D3位
x=OSUnMapTal[OSRdyTbl[y]]; //获得优先级别的D2、D1 、D0位
prio=(y<<3)+x;
prio是表示优先级的一个无符号八位数,不过只有低六位有效。prio与就绪任务表的两个数组的关系是这样的:prio高三位表示组数,即OSRdyGrp[]中的哪一位是一。低三位表示这一组中的位数,即OSRdyTbl[]中的哪一位是一。例如,如果prio是00011001,即优先级是25。则OSRdyGrp[]中的第三位是被置一的,OSRdyTbl[]中的第一位是被置一的。
由于有可能有很多任务是处于就绪状态的,也就是说OSRdyGrp[]和OSRdyTbl[]中均有可能不止一位是被置一的。由于优先级的数字越小,级数越高,所以要从这些就绪的任务中找出优先级最高的任务,就需要找出这两个数组中被置为一的最低位。
y=OSUnMapTal[OSRdyGrp];//获得优先级别的D5、D4、D3位
x=OSUnMapTal[OSRdyTbl[y]]; //获得优先级别的D2、D1 、D0位
prio=(y<<3)+x;
prio是表示优先级的一个无符号八位数,不过只有低六位有效。prio与就绪任务表的两个数组的关系是这样的:prio高三位表示组数,即OSRdyGrp[]中的哪一位是一。低三位表示这一组中的位数,即OSRdyTbl[]中的哪一位是一。例如,如果prio是00011001,即优先级是25。则OSRdyGrp[]中的第三位是被置一的,OSRdyTbl[]中的第一位是被置一的。
由于有可能有很多任务是处于就绪状态的,也就是说OSRdyGrp[]和OSRdyTbl[]中均有可能不止一位是被置一的。由于优先级的数字越小,级数越高,所以要从这些就绪的任务中找出优先级最高的任务,就需要找出这两个数组中被置为一的最低位。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询