ucos-ii 之OSTaskDelReq函数

简介: #if OS_TASK_DEL_EN > 0INT8U OSTaskDelReq (INT8U prio){                                       ...

#if OS_TASK_DEL_EN > 0

INT8U OSTaskDelReq (INT8U prio)

{                                            

#if OS_CRITICAL_METHOD == 3                     

    OS_CPU_SR cpu_sr;

#endif

    BOOLEAN    stat;

    INT8U      err;

    OS_TCB    *ptcb;

#if OS_ARG_CHK_EN > 0

if (prio == OS_IDLE_PRIO) {                             //不能删除空闲任务

        return (OS_TASK_DEL_IDLE);

    }

    if (prio >= OS_LOWEST_PRIO && prio != OS_PRIO_SELF) {      //优先级错误

        return (OS_PRIO_INVALID);

    }

#endif

(说明:如果调用者就是被删除的任务本身,存储在OS_TCB中的标志将会作为返回值返回)

    if (prio == OS_PRIO_SELF) {                               

        OS_ENTER_CRITICAL();                                   

        stat = OSTCBCur->OSTCBDelReq;                          

        OS_EXIT_CRITICAL();

       return (stat);

    }

    OS_ENTER_CRITICAL();

    if ((ptcb = OSTCBPrioTbl[prio]) != (OS_TCB *)0) {          

        ptcb->OSTCBDelReq = OS_TASK_DEL_REQ;

(说明:将任务控制块的OSTCBDelReq的值设为OS_TASK_DEL_REQ。当被删除任务被调度时,会检查OSTCBDelReq的值。为OS_TASK_DEL_REQ时,调用OSTaskDel()

        err               = OS_NO_ERR; //设置返回信息为OS_NO_ERR

    } else {

        err               = OS_TASK_NOT_EXIST; //任务控制块不存在,设置返回信息为OS_TASK_NOT_EXIT  

    }

    OS_EXIT_CRITICAL();

    return (err);

}

#endif

思考:OS_ENTER_CRITICAL()OS_EXIT_CRITICAL()在什么情况下使用?

目录
相关文章
|
Java
20JavaWeb基础 - EL技术
20JavaWeb基础 - EL技术
107 0
|
机器学习/深度学习 人工智能 Cloud Native
大语言模型推理提速,TensorRT-LLM 高性能推理实践
大型语言模型(Large language models,LLM)是基于大量数据进行预训练的超大型深度学习模型,本文主要讲述TensorRT-LLM利用量化、In-Flight Batching、Attention、Graph Rewriting提升 LLM 模型推理效率。
102460 2
|
机器学习/深度学习 算法 Python
群智能算法:深入解读人工水母算法:原理、实现与应用
近年来,受自然界生物行为启发的优化算法备受关注。人工水母算法(AJSA)模拟水母在海洋中寻找食物的行为,是一种新颖的优化技术。本文详细解读其原理及实现步骤,并提供代码示例,帮助读者理解这一算法。在多模态、非线性优化问题中,AJSA表现出色,具有广泛应用前景。
|
存储 JavaScript
这一定是最有用的vite插件入门教程了!
【8月更文挑战第3天】 vite插件核心在于几个钩子函数的理解与使用,想开发vite插件,掌握这几个插件即可。本文中探讨了**config钩子**和**transformIndexHtml钩子**,相信大家看完对插件开发一定有了最基本的认识与方向!
711 3
|
存储 SQL 关系型数据库
MySQL事务日志奥秘:undo log大揭秘,一文让你彻底解锁!
【8月更文挑战第24天】本文深入探讨了MySQL中undo log的关键作用及其在确保事务原子性和一致性方面的机制。MySQL通过记录事务前的数据状态,在需要时能回滚至初始状态。主要介绍InnoDB存储引擎下的undo log实现,包括undo segment和record的结构,而MyISAM则采用redo log保障持久性而非一致性。通过一个简单的SQL回滚示例,展示了undo log如何在实际操作中发挥作用,帮助读者更好地理解并运用MySQL事务管理功能。
754 0
|
人工智能 数据可视化 数据处理
推荐2款免费开源的标注工具,支持大模型对话标注
【LabelLLM】一款开源免费的大模型对话标注平台,专为优化大型语言模型的数据标注过程设计。支持灵活配置与多模态数据(音频、图像、视频),具备全面任务管理和AI辅助标注功能,大幅提升标注效率与准确性。了解更多请前往https://github.com/opendatalab/LabelLLM 【LabelU】一款轻量级开源标注工具,支持图像、视频、音频的高效标注。特色功能包括多功能图像处理、视频和音频分析等,简易灵活,支持多种数据格式输出。了解更多请前往https://github.com/opendatalab/labelU
3087 11
|
测试技术 UED
软件测试中的探索性测试:一种创新的质量保证方法
在软件开发的生命周期中,测试阶段扮演着至关重要的角色。传统的软件测试方法,如自动化测试和回归测试,虽然在一定程度上保证了软件质量,但它们往往依赖于预定义的测试用例和脚本,可能无法覆盖所有用户场景和边缘情况。为了克服这些限制,探索性测试作为一种创新的质量保证方法应运而生。本文将深入探讨探索性测试的概念、优势以及如何有效地实施它,以帮助读者更好地理解和应用这种测试技术。
|
缓存 负载均衡 架构师
阿里资深架构师钟华曰:中台战略思想与架构实战;含内部实施手册
最近在读一本书,叫做《企业IT架构转型之道:阿里巴巴中台战略思想与架构实战》,在写此文时本书还没有看完,因为担心如果把书全部看完后再来写这篇文章,很多精彩的内容可能已经忘记了,所以中途先写一篇来分享给大家。
|
Kubernetes 网络性能优化 调度
Kubernetes Error 权威指南(下)
Kubernetes Error 权威指南(下)
Kubernetes Error 权威指南(下)