查看: 3196|回复: 2

OS_PRIO_SELF为什么要用它来表示任务自身的优先级?

[复制链接]
  • TA的每日心情
    奋斗
    2016-1-28 10:03
  • 签到天数: 20 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2014-2-18 14:07:09 | 显示全部楼层 |阅读模式
    分享到:
    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

    发表于 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


    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-1-28 10:03
  • 签到天数: 20 天

    连续签到: 1 天

    [LV.4]偶尔看看III

     楼主| 发表于 2014-2-24 11:41:29 | 显示全部楼层
    亮点 发表于 2014-2-24 11:35
    这个代码是在
    INT8U  

    恩,有的地方是方便多了!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-24 03:45 , Processed in 0.143625 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.