《国宝迷踪(第3部)》免费在线听mp3音频资源,求百度网盘

《国宝迷踪(第3部)》免费在线听mp3音频资源,求百度网盘,第1张

《国宝迷踪(第3部)》免费在线听mp3音频百度网盘资源

stkq

厦门大学傅小凡教授做客《百家讲坛》,为您精彩讲述系列节目《国宝迷踪》第三部。

   

      

改变任务优先级

描述:此函数允许你动态改变一个任务的优先级。但新的优先级必须可行

参数:oldp :旧的优先级

newp:新的优先级

返回:OS_NO_ERR:改变成功

OS_PRIO_INVALID:指定的优先级不合法:超过最大值

OS_PRIO_EXIST:新优先级已经存在

OS_PRIO_ERR:旧优先级任务不存在

/

#if OS_TASK_CHANGE_PRIO_EN > 0 //如果OS_TASK_CHANGE_PRIO_EN设置为1,能使包含下面代码

INT8U OSTaskChangePrio (INT8U oldprio, INT8U newprio)

{

#if OS_CRITICAL_METHOD == 3 / Allocate storage for CPU status register /

//为CPU状态寄存器分配存储器

OS_CPU_SR cpu_sr; //OS_CPU_SR即为unsigned int

#endif

#if OS_EVENT_EN > 0

//OS_EVENT_EN 定义为:(((OS_Q_EN > 0) && (OS_MAX_QS > 0)) || (OS_MBOX_EN > 0) || (OS_SEM_EN > 0) || (OS_MUTEX_EN > 0))

//OS_EVENT_EN 定义为:能使队列代码产生&&申请队列控制块最大数不为零||能使邮箱代码产生||

//能使信号量代码产生||能使互斥量代码产生

OS_EVENT pevent;

#endif

OS_TCB ptcb;

INT8U x;

INT8U y;

INT8U bitx;

INT8U bity;

#if OS_ARG_CHK_EN > 0//允许参数检测

if ((oldprio >= OS_LOWEST_PRIO && oldprio != OS_PRIO_SELF) ||

newprio >= OS_LOWEST_PRIO) {//旧新优先级都不合法

return (OS_PRIO_INVALID);

}

#endif

OS_ENTER_CRITICAL();//如果合法

if (OSTCBPrioTbl[newprio] != (OS_TCB )0) { / New priority must not already exist /

OS_EXIT_CRITICAL();

return (OS_PRIO_EXIST);//新优先级必须不存在,存在就重复了

} else {

OSTCBPrioTbl[newprio] = (OS_TCB )1; / Reserve the entry to prevent others /

//保留入口,防止其它任务占用此优先级

OS_EXIT_CRITICAL();

y = newprio >> 3; / Precompute to reduce INT latency /

//此函数会预先计算新优先级任务的任务控制块中的某些值,使用这些值

//可以将任务放入就绪步或者从该表中移除任务

bity = OSMapTbl[y];

x = newprio & 0x07;

bitx = OSMapTbl[x];

OS_ENTER_CRITICAL();

if (oldprio == OS_PRIO_SELF) { / See if changing self /

//如果改变自己

oldprio = OSTCBCur->OSTCBPrio; / Yes, get priority /

}//是的,得到优先级

ptcb = OSTCBPrioTbl[oldprio];//得到该优先级TCB指针

if (ptcb != (OS_TCB )0) { / Task to change must exist /

//优先级存在,如果要改变的是当前任务,由一定会成功

OSTCBPrioTbl[oldprio] = (OS_TCB )0; / Remove TCB from old priority /

//通过放入空闲指针,将指向当前任务的TCB指针从优先级列表中删除,

//使当前旧的优先级空闲,可以被其它任务占用

if ((OSRdyTbl[ptcb->OSTCBY] & ptcb->OSTCBBitX) != 0x00) { / If task is ready make it not /

if ((OSRdyTbl[ptcb->OSTCBY] &= ~ptcb->OSTCBBitX) == 0x00) { //如果要改变优先级的任务就绪

OSRdyGrp &= ~ptcb->OSTCBBitY;//不能让它就绪,

}

OSRdyGrp |= bity; / Make new priority ready to run /

OSRdyTbl[y] |= bitx;//从就绪表中移除,然后在新优先级下,将任务插入就绪表,

//注意:OSTaskChangePrio是利用预先计算的值(见前面)将任务插入就绪表中的

#if OS_EVENT_EN > 0

//#define OS_EVENT_EN (((OS_Q_EN > 0) && (OS_MAX_QS > 0)) || (OS_MBOX_EN > 0) || (OS_SEM_EN > 0) || (OS_MUTEX_EN > 0))

//能使队列代码产生&&申请队列控制块最大数不为零||能使邮箱代码产生||

//能使信号量代码产生||能使互斥量代码产生

} else {

pevent = ptcb->OSTCBEventPtr;

if (pevent != (OS_EVENT )0) { / Remove from event wait list /

//如果任务没有就绪,那么可能在等一个信号量,一个互斥型信号量,一个邮箱,队列

//等,如果OSTCBEventPtr非空,那么此函数会知道任务正在等以上的某件事

if ((pevent->OSEventTbl[ptcb->OSTCBY] &= ~ptcb->OSTCBBitX) == 0) {

pevent->OSEventGrp &= ~ptcb->OSTCBBitY;

}

pevent->OSEventGrp |= bity; / Add new priority to wait list /

//如果任务正在等某事件发生,OSTCBEventPtr必须将任务从事件控制块的等待队列(旧

//的优先级下)中移除,并在新的优先级下将事件插入到等待队列中任务也可能正

//在等待延时时间到,或被挂起,上面几行可以省略

欢迎分享,转载请注明来源:品搜搜测评网

原文地址:https://pinsoso.cn/meirong/3805965.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2024-03-23
下一篇2024-03-23

随机推荐

  • 哪个牌子的化妆品性价比高

    朋友你好!性价比高的化妆品有国产彩妆排行榜前十名卡姿兰——卡姿兰(香港)有限公司2002年培育,2003年开始终端操作,2005年市场开始起色,2006年品牌风生水起,2007年到达顶峰,2008年终端优化,2009年大刀阔斧的消费者品牌提

    2024-04-15
    54900
  • 伊索芹菜籽精华用法你知道吗?伊索芹菜籽精华保质期是多久?精华怎么样?

    伊索的芹菜籽精华其实是一款非常好用的精华,但是很多人因为方法不对而没有好好利用。下面小编就来教大家这款芹菜籽精华的正确用法。伊索芹菜籽精华的用法?伊索种子精华的使用真的是良莠不齐,两极分化。其实这个精华真的很好用。很多人其实用错了方法,所以

    2024-04-15
    49800
  • 莱伯妮黄金精华液含酒精吗

    莱伯妮黄金精华液不含酒精。根据查询相关信息得知,莱伯妮黄金精华液的成分为鱼籽精华以及各种化学成分,没有酒精。LaPrairie是一种护肤产品。在瑞士的蒙特里斯有一座赫赫有名的LaPrairie疗养中心,LaPrairie护肤系列研究所传承了

    2024-04-15
    41300
  • 问一问:妮维雅小蓝罐唇膏真假如何鉴别呢?

    妮维雅小蓝罐唇膏的鉴定妮维雅小蓝罐唇膏真假妮维雅小蓝罐唇膏真正的设计:正品上有蜂窝图案,一共8个。假货忽略了这个图标,说明口红含有蜂胶。正品口红底部的图案有花王有限公司、产地、电话、生产批号等信息。下面。仿制假货往往会有疏漏,可以参考鉴别。

    2024-04-15
    46300
  • frangi芙蓉肌洗面奶怎么样?芙蓉肌洗面奶好用吗?

    frangi芙蓉肌这个牌子的护肤品最近非常火,其中这款芙蓉肌洗面奶特别温和,洗的很干净,而且不会刺激眼睛,对皮肤非常好,性价比很高。下面我给大家讲讲frangi芙蓉肌洗面奶怎么样?芙蓉肌洗面奶好用吗?芙蓉肌洗面奶怎么样本人是那种到了

    2024-04-15
    50600
  • 妮维雅防晒霜哪款好用?妮维雅防晒霜哪个好用?

    很多人应该都用过妮维雅的产品,妮维雅是一个比较常见的品牌,它们家的男士洗面奶很受欢迎,现在它们家的唇膏是比较火的,价格不贵而且很好用,夏季当然也少不了防晒霜,妮维雅也是有防晒霜的,那妮维雅防晒霜哪款好用?妮维雅防晒霜哪个好用?1、妮维雅防晒

    2024-04-15
    35700
  • 精华露的正确使用步骤精华露的正确使用步骤是怎样的

    1、首先用洁面乳将肌肤清洁干净,让脸部肌肤保持干净。2、涂抹爽肤水,可以将护肤品滴在化妆棉上,然后再涂抹在脸上,还能起到二次清洁的作用,保证肌肤喝足水。3、使用精华露,在调理肌肤后,取按压喷头两下的精华露放在掌心处,然后双手合十,把精华露预

    2024-04-15
    44700

发表评论

登录后才能评论
保存