#define OS_PRIO_SELF 0xFF /* Indicate SELF priority */
为什么能够这样定义呢? 标志自己的优先级
如果我的优先级不是0XFF 是23 22 21?这个怎么能代替当前任务的优先级呢?
不解......
希望哪位帮我解惑下.....
在线程中加 CeSetThreadPriority(GetCurrentThread(), 优先级别);
想设多少就设多少
可能是我提问问的不清楚
#define OS_PRIO_SELF 0xFF /* Indicate SELF priority */
if (prio >= OS_LOWEST_PRIO && prio != OS_PRIO_SELF) //****************1)
{
return (OS_PRIO_INVALID); //****************2)
}
1).判断优先级是否有效,如果prio >= OS_LOWEST_PRIO 优先级>=最低优先级(包括了0xff即 OS_PRIO_SELF)且prio != OS_PRIO_SELF 优先级不是自己当前优先级(去掉了自己优先级)
2).那么返回优先级无效
这里OS_PRIO_SELF 代表了任务当前优先级.... 不理解...
是这样的,由于任务的优先级是从0到63,而不可能是0xFF,那么在任务中调用函数时,用OS_PRIO_SELF 作为参数,在函数里就要进行判断,如果参数是OS_PRIO_SELF ,那么就会重新求函数真正的优先级,所以你看几个任务管理的函数,用到OS_PRIO_SELF的都有这么一句:if (prio == OS_PRIO_SELF )
prio = OSTCBCur->OSTCBPrio;