美文网首页RTOS和GUI_基于英飞凌tc2x及stm32开发板
数组代替链表插入OS就绪队列的设计--Apple的学习笔记

数组代替链表插入OS就绪队列的设计--Apple的学习笔记

作者: applecai | 来源:发表于2020-04-14 21:24 被阅读0次

Erika2看上去都没有指针,果然符合Misra,那么都是用固定的数组,怎么实现其它RTOS用链表方法按优先级将task插入到就绪列表的呢?

我今天从StartOS开始看code,Activetask中有调用EE_rq_insert函数,就是用来将任务插入到就绪列表。我选择ECC1配置来分析代码,这样比较简单,因为同一个优先级只允许一个task。

就绪队列插入的关键代码设计如下

#if defined(__OO_BCC1__) || defined(__OO_ECC1__)
/* this function inserts a task into the ready queue */
void EE_rq_insert(EE_TID t)
{
  EE_TYPEPRIO prio;
  EE_TID p,q;

  p = EE_NIL;
  q = EE_rq_first;
  prio = EE_th_ready_prio[t];

  while ((q != EE_NIL) && (prio <= EE_th_ready_prio[q])) {
    p = q;
    q = EE_th_next[q];
  }

  if (p != EE_NIL) {
    EE_th_next[p] = t;
  } else {
    EE_rq_first = t;
  }

  EE_th_next[t] = q;
}
#endif

关键代码理解绘图分析

就绪队列插入分析.png

代码分析文字描述

文字描述.png

相关文章

  • 数组代替链表插入OS就绪队列的设计--Apple的学习笔记

    Erika2看上去都没有指针,果然符合Misra,那么都是用固定的数组,怎么实现其它RTOS用链表方法按优先级将t...

  • 数据结构动画描述

    数组 插入数组插入 删除数组删除 链表 栈 队列 二分搜索树 插入

  • 数据结构java描述

    接口 栈 队列 集合 并查集 映射 数组 链表 栈 数组实现 链表实现 队列 数组实现 链表实现 二分搜索树 集合...

  • HashMap

    数据结构 HashMap 是一个数组,每个item都是一个链表 设计初衷 数组:查询快,插入慢链表:查询慢,查询快...

  • 常见的数据结构

    常见的数据结构有: 数组 链表单链表、双向链表、循环链表、双向循环链表、静态链表 栈顺序栈、链式栈 队列普通队列、...

  • 数据结构与算法之数组与链表

    线性表包括数组,链表(单链表,双向链表,循环链表,双向循环链表,静态链表),栈(顺序栈,链式栈),队列(普通队列,...

  • 数据结构与算法之栈与队列

    线性表包括数组,链表(单链表,双向链表,循环链表,双向循环链表,静态链表),栈(顺序栈,链式栈),队列(普通队列,...

  • 队列(链表实现)

    基于链表数据结构实现Queue,将队列表示为一条从最早插入的元素到最近插入的元素的链表,实例变量first指向队列...

  • 用链表实现栈(go版本)

    //文件遍历//轻量级 数组栈 深度遍历 数组队列,广度遍历//重量级 链表栈 深度遍历 链表队列,广度遍历

  • 用链表实现队列(go版本)

    //文件遍历//轻量级 数组栈 深度遍历 数组队列,广度遍历//重量级 链表栈 深度遍历 链表队列,广度遍历

网友评论

    本文标题:数组代替链表插入OS就绪队列的设计--Apple的学习笔记

    本文链接:https://www.haomeiwen.com/subject/cgmxvhtx.html