µC/OS-II---任务就绪表

目录

  • 任务就绪表的结构
  • 使任务进入就绪状态
    • OS_LOWEST_PRIO <= 63(以28为例)
    • OS_LOWEST_PRIO <= 254(以65为例)
  • 使任务脱离就绪状态
  • 获取任务就绪表中优先级最高的就绪任务
    • 优先级判定表OSUnMapTbl[ ]
    • OS_LOWEST_PRIO <= 63
    • OS_LOWEST_PRIO <= 254

任务就绪表的结构

  • 由两个全局变量构成。
#if OS_LOWEST_PRIO <= 63u
#define  OS_RDY_TBL_SIZE   ((OS_LOWEST_PRIO) / 8u + 1u) /* Size of ready table*/
#else
#define  OS_RDY_TBL_SIZE   ((OS_LOWEST_PRIO) / 16u + 1u)/* Size of ready table*/
#endif
OS_EXT  OS_PRIO      OSRdyGrp;                     		/* Ready list group*/
OS_EXT  OS_PRIO      OSRdyTbl[OS_RDY_TBL_SIZE];	/* Table of tasks which are ready to run*/

其中,OS_EXT

#ifdef   OS_GLOBALS
#define  OS_EXT
#else
#define  OS_EXT  extern
#endif

还有,OS_PRIO

#if OS_LOWEST_PRIO <= 63u
typedef  INT8U    OS_PRIO;
#else
typedef  INT16U   OS_PRIO;
#endif

使任务进入就绪状态

#if OS_LOWEST_PRIO <= 63u                                         /* Pre-compute X, Y*/ptcb->OSTCBY             = (INT8U) (prio >> 3u);ptcb->OSTCBX             = (INT8U) (prio & 0x07u);
#else                                                             /* Pre-compute X, Y*/ptcb->OSTCBY             = (INT8U) ((INT8U) (prio >> 4u) & 0xFFu);ptcb->OSTCBX             = (INT8U) (prio & 0x0Fu);
#endif/* Pre-compute BitX and BitY*/ptcb->OSTCBBitY          = (OS_PRIO) (1uL << ptcb->OSTCBY<

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/704348.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab 凸轮轮廓设计

1、内容简介 略 46-可以交流、咨询、答疑 2、内容说明 略 4 取标段的分析 取标装置是贴标机的核心部件之一&#xff0c;是影响贴标质量和贴标精度的重要因素&#xff0c;取标段是通过取标板与标签的相切运动使得涂有胶水的取标板从标签盒中粘取标签纸[4]&#xff0c;理论…

程序员的护城河是什么?最终走向……?

程序员未来会大量失业&#xff0c;就是因为社会需求少&#xff0c;导致开发者岗位减少&#xff0c;人力资源过剩所导致。Android刚开始的零几年非常火热&#xff0c;是个人都要。到如今的内卷&#xff0c;高级开发都拿着中低程序员的薪资。这是因为头部大厂形成标准化&#xff…

键盘录入 Scanner 详解

键盘录入 涉及方法 next&#xff08;&#xff09;、nextLine&#xff08;&#xff09;、nextInt&#xff08;&#xff09;、nextDouble&#xff08;&#xff09; 键盘录入得到的字符串是new出来的 1&#xff09;next&#xff08;&#xff09;、nextLine&#xff08;&#x…

【总结】Maxwell学习笔记

1.Maxwell简介 Maxwell 是一款用Java编写的MySQL变更数据抓取软件&#xff0c;它会实时监控Mysql数据库的数据变更操作&#xff08;包括insert、update、delete&#xff09;&#xff0c;并将变更数据以 JSON 格式发送给 Kafka、Kinesi等流数据处理平台 官网地址&#xff1a;M…

PTA - 求奇数分之一序列前N项和

本题要求编写程序&#xff0c;计算序列 1 1/3 1/5 ... 的前N项之和。 输入格式: 输入在一行中给出一个正整数N。 输出格式: 在一行中按照“sum S”的格式输出部分和的值S&#xff0c;精确到小数点后6位。题目保证计算结果不超过双精度范围。 输入样例: 23输出样例: …

Java 面试题基础(六)

Java 面试题基础&#xff08;六&#xff09; 前言1、深拷贝和浅拷贝&#xff1f;2、poll() 方法和 remove() 方法的区别&#xff1f;3、DelayQueue实现延时任务原理&#xff1f;4、ArrayList 与 LinkedList 的区别&#xff1f;5、用哪两种方式来实现集合的排序&#xff1f;6、L…

css控制元素像素计算方式

box-sizing: border-box; 是一个CSS属性&#xff0c;用于更改元素盒模型的计算方式。 在CSS中&#xff0c;每个元素都被视为一个盒子&#xff0c;这个盒子由内容、内边距&#xff08;padding&#xff09;、边框&#xff08;border&#xff09;和外边距&#xff08;margin&…

FFmpeg的HEVC解码器源代码学习笔记-2

摘要 这篇主要厘清FFmpeg如何调用多种视频编解码代码进行解码的主要函数调用逻辑 背景 FFmpeg作为一个视频编解码开源框架&#xff0c;被企业和个人广泛使用&#xff0c;但是一直不清楚他是怎么调用多种编解码器的&#xff0c;由于现在想做一个HEVC的码流分析器&#xff0c;…

利用HubSpot出海营销CRM扩大企业在东南亚市场的影响力

东南亚市场作为全球最具活力和潜力的市场之一&#xff0c;吸引着越来越多的企业前来拓展业务。在这个竞争激烈的市场中&#xff0c;如何高效地管理营销和客户关系成为了企业成功的关键。今天运营坛将介绍如何利用HubSpot这一出海营销CRM工具&#xff0c;实现在东南亚市场的影响…

本地部署ChatGPT

发布一下我之前做的一个本地大模型部署,不需要API key,但要有自己的账号 利用Docker 的Pandora做本地ChatGPT模型部署 先下载安装Docker,设置好运行如下 会要求升级核心,cmd运行如下命令就OK 安装Pandora 再管理员cmd中输入如下命令拉取Pandora镜像 docker pull pengzhi…

js之事件代理/事件委托

事件代理也叫事件委托&#xff0c;原理&#xff1a;利用DOM元素的事件冒泡&#xff0c;指定一个事件的处理程序就可以管理某一类型的所有事件。 事件冒泡和事件捕获 如上图所示&#xff0c;事件传播分成三个阶段&#xff1a; 捕获阶段&#xff1a;从window对象传导到目标节点&…

Nginx的重定向,nginx.conf中location的匹配,rewrite介绍,Nginx发内置变量

目录 一、Nginx的内置变量 二、Nginx中的配置选项和指令 三、Nginx常见的正则表达式 四、location匹配 4.1、location分类 4.2、location常用的匹配规则 4.3、location优先级 4.4、实际网站中使用的匹配规则 五、rewrite介绍 5.1、rewrite作用 5.2、rewrite跳转实现 5.…

【MySQL面试复习】详细说下事务的特性

系列文章目录 在MySQL中&#xff0c;如何定位慢查询&#xff1f; 发现了某个SQL语句执行很慢&#xff0c;如何进行分析&#xff1f; 了解过索引吗&#xff1f;(索引的底层原理)/B 树和B树的区别是什么&#xff1f; 什么是聚簇索引&#xff08;聚集索引&#xff09;和非聚簇索引…

猫毛过敏却想养猫时?如何缓解猫毛过敏?宠物空气净化器推荐

作为一个新养猫的主人&#xff0c;一开始并没有发现对猫咪过敏。直到养了半年才意识到这个问题&#xff0c;而此时我已经和猫咪有了深厚的感情。我不想放弃我的猫咪&#xff0c;但是留着它的话&#xff0c;我经常会因为流眼泪、打喷嚏、眼睛发红等过敏症状而影响日常生活&#…

Unity编辑器扩展之Text组件中字体替换工具

想要批量化替换项目预制体资源中Text组件引用的Font字体文件&#xff0c;可以采用以下步骤。 1、在项目的Editor文件中&#xff0c;新建一个名为FontToolEditor的C#脚本文件&#xff0c;然后把以下代码复制粘贴到新建的FontToolEditor的C#脚本文件中。 using System.Collect…

【深度学习笔记】3_14 正向传播、反向传播和计算图

3.14 正向传播、反向传播和计算图 前面几节里我们使用了小批量随机梯度下降的优化算法来训练模型。在实现中&#xff0c;我们只提供了模型的正向传播&#xff08;forward propagation&#xff09;的计算&#xff0c;即对输入计算模型输出&#xff0c;然后通过autograd模块来调…

哪只基金更值得买入?学会这套BI基金分析逻辑,稳赚不赔

投资基金是一种出色的理财方式&#xff0c;对于初次涉足基金领域的投资者而言&#xff0c;首先需要解决两个关键问题&#xff1a;一是基金是否值得投资&#xff1f;二是如何选择适合自己的基金&#xff1f; 以往盲目跟随成功的基金经理&#xff0c;或者仅仅依赖历史涨跌经验的…

消息中间件之RocketMQ源码分析(十七)

Broker CommitLog索引机制的数据结构 ConsumerQueue消费队列 主要用于消费拉取消息、更新消费位点等所用的索引。源代码参考org.apache.rocketmq.store.ConsumerQueue.该文件内保存了消息的物理位点、消息体大小、消息Tag的Hash值 物理位点:消息在CommitLog中的位点值消息体…

Android 水波纹扩散效果实现

人生只是一种体验&#xff0c;不必用来演绎完美。 效果图 View源码 package com.android.circlescalebar.view;import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ObjectAnimator; import android.animation.…

算法训练营day36(补),动态规划4

背包最大重量为4。 物品为&#xff1a; 重量价值物品0115物品1320物品2430 问背包能背的物品最大价值是多少&#xff1f; func max(a, b int) int { if a > b { return a } return b } //二维数组解法 func package01(weight, value []int, bagweight int) int { // w…