OS_PRIO_SELF为什么要用它来表示任务自身的优先级?
#开源分享
3469 人阅读
|
2 人回复
|
2014-02-18
TA的每日心情 | 奋斗 2016-1-28 10:03 |
|---|
签到天数: 20 天 连续签到: 1 天 [LV.4]偶尔看看III
秀才
- 积分
- 404
|
if (oldprio >= OS_LOWEST_PRIO) {
if (oldprio != OS_PRIO_SELF) {
return (OS_ERR_PRIO_INVALID);
}
}
这里的是参数检查是搞明白了的,但是下面的代码干嘛这样用
if (oldprio == OS_PRIO_SELF) { /* See if changing self */
oldprio = OSTCBCur->OSTCBPrio; /* Yes, get priority */
}
ptcb = OSTCBPrioTbl[oldprio];
直接用ptcb = OSTCBPrioTbl[oldprio];把前面的改成不要超过OS_LOWEST_PRIO就行了吧。
求助详细解释哈OS_PRIO_SELF这玩意? |
|
|
|
|
|
|
|
|
TA的每日心情 | 开心 2018-1-8 15:51 |
|---|
签到天数: 22 天 连续签到: 1 天 [LV.4]偶尔看看III
版主
- 积分
- 11544
   

|
沙发
laoliang-67665
发表于 2014-2-24 11:35:43
|
只看该作者
这个代码是在
INT8U
if (oldprio == OS_PRIO_SELF) { /* 如果是改变本任务的优先级*/
oldprio = OSTCBCur->OSTCBPrio; /* 从任务控制块中取出本任务的优先OSTaskChangePrio (INT8U oldprio,
INT8U newprio)
级 */
}
ptcb = OSTCBPrioTbl[oldprio];
看OS_PRIO_SELF的定义 #define OS_PRIO_SELF 0xFFu
如果参数oldprio为OS_PRIO_SELF ,就是改变自己的优先级,这样写代码可读性强,比较容易懂,不容易错
例如
OSTaskChangePrio (OS_PRIO_SELF,
30) //将被任务优先级改为30
|
|
|
嵌入式,ucos,FPGA系统书籍作者
|
|
|
|
|
|
TA的每日心情 | 奋斗 2016-1-28 10:03 |
|---|
签到天数: 20 天 连续签到: 1 天 [LV.4]偶尔看看III
秀才
- 积分
- 404
|
板凳
yilusuiyuan
发表于 2014-2-24 11:41:29
|
只看该作者
亮点 发表于 2014-2-24 11:35 ![]()
这个代码是在
INT8U
恩,有的地方是方便多了! |
|
|
|
|
|
|
|
|