在看ucosii 中关于删除任务的函数 OSTaskDel 时看到

if (prio == OS_PRIO_SELF) {                                 /* See if requesting to delete self    */
     prio = OSTCBCur->OSTCBPrio;                             /* Set priority to delete to current   */
    }

这样一段代码,一开始不太理解,自己仔细想了想,下面说一下自己的理解。

我先查了一下 OS_PRIO_SELF 是在uCOS_II.H中定义的:

#define  OS_PRIO_SELF           0xFF                    /* Indicate SELF priority                      */

即 OS_PRIO_SELF 是一个全局变量,且值是0xFF 。那么这个数字有什么用那?

我是这样理解的,这个常量使用在有关ucos中任务处理的函数上的,用它来代表一个任务自己的优先级,你可能要问了OS_PRIO_SELF的值不是0xff 吗,他怎么代表当前任务自己的优先级那。是这样的,在每一个函数内部都有我上面用红的字体表示出的代码,把当前真实的优先级赋给prio。这样当你不知道当前任务的优先级时,你就可以用OS_PRIO_SELF来代替了。反正它函数内部有转换成真正的优先级的代码。

这样对我们编程者来说更方便。

例如:你想用OSTaskDel ()这个函数删除当前的任务,一种方法是你给函数传当前任务的优先级(前提是你自己知道)即OSTaskDel (24)【假设当前任务的优先级就是24 】,另一种方法是直接写 OSTaskDel (OS_PRIO_SELF )。反正在函数内部会把真正的当前任务优先级赋给prio的。

关于OS_PRIO_SELF的说明的更多相关文章

  1. uC/OS-II全局变量定义

    /*************************************************************************************************** ...

  2. uC/OS-II任务(OS_task)块

    /*************************************************************************************************** ...

  3. zju(11)在IAR中移植ucos到msp430

    准备材料 1.在TI官网上下载430的固件库,我用的是msp430f5528的板子,下载的是F5xx_F6xx_Core_Lib 地址http://www.ti.com/tool/msp-exp430 ...

  4. 嵌入式实时操作系统μCOS原理与实践任务控制与时间的解析

    /*************************************************************************************************** ...

  5. uC/OS-II之系统函数20160526

    任务管理 1 OSTaskCreate() 建立一个新任务.任务的建立可以在多任务环境启动之前,也可以在正在运行的任务中建立.中断处理程序中不能 建立任务.一个任务可以为无限循环的结构. 函数原型:I ...

  6. OS_TASK.C

    /*************************************************************************************************** ...

  7. uCOS-II任务的挂起和恢复

    函数描述 OSTaskSuspend() 功能描述:无条件挂起一个任务.调用此函数的任务也可以传递参数OS_PRIO_SELF,挂起调用任务本身.函数原型:INT8U OSTaskSuspend ( ...

  8. 查看uCOS-II的CPU使用率

    代码模板: void main(void) { OSInit(); /* 安装uCOS-II的任务切换向量 */ /* 创建用户起始任务TaskStart */ OSStart(); } void T ...

  9. UCOS 请求任务删除函数 及其应用

    有时候,如果任务A拥有内存缓冲区或信号量之类的资源,而任务B想删除该任务,这些资源就可能由于没被释放而丢失.在这种情况下,用户可以想法子让拥有这些资源的任务在使用完资源后,先释放资源,再删除自己.用户 ...

随机推荐

  1. directsound 应用实例

    sdk里边有个文件夹Samples\C++\XInput\AudioController这个就是

  2. thinksns消息提示的实现机制(转)

    转自:http://jingyan.baidu.com/article/f25ef2541718eb482c1b8215.html thinksns的消息提示不是实时的,而是1分钟向服务器请求一次,再 ...

  3. 页面点击关闭弹出提示js代码

    代码效果为: <script> window.onbeforeunload = function() { return "您好!\n我是abc\n —————————————— ...

  4. 使用php实现爬虫程序 套取网站的图片实例

    <?php //去采集a67 图片 网站链接 http://www.xiamov.com/list/1/p.2 你也可以采集其他网站的图片 //创建链接 dedecms--a67 //设置执行不 ...

  5. Linux系统上使用php获取apk信息

    最近在做一个apk商城,需要在用户上传了apk之后系统自动读取apk信息(包名,版本号等),后台语言使用的是php,需要php去调用系统的aapt命令去读取apk信息,在Linux系统上安装aapt的 ...

  6. &lt和&gt

    今天用到&gt查了查资料就是这么个回事.

  7. thinkphp 中js 实现刷新

    <input name="Button5" value="返回" id="Button5" style="width:56p ...

  8. Jsoup库 解析DOM文档

    DOM文档包括 HTML, XML等等 下载: http://jsoup.org/download Jsoup 获取数据的方式 //html 文本, url, 本地html String html = ...

  9. Josephus

    利用循环链表模拟约瑟夫问题,把自杀的人的顺序排列出来 代码如下: #include<stdio.h> #include<stdlib.h> typedef int status ...

  10. hadoop各版本下载

    http://hadoop.apache.org/ Download Hadoop from the release page. http://hadoop.apache.org/releases.h ...