查看: 3243|回复: 4

[求助] AUX_QUEUE队列的问题

[复制链接]
  • TA的每日心情
    奋斗
    2017-1-17 10:45
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    38

    主题

    395

    帖子

    3

    高级会员

    Rank: 4

    积分
    780
    最后登录
    2023-11-17
    发表于 2012-2-15 14:15:58 | 显示全部楼层 |阅读模式
    MQX中任务描述符(TD)类型中有这么个字段
    /* Extra link list pointer for future development */
    QUEUE_ELEMENT_STRUCT              AUX_QUEUE;
    在处理“滴答”节拍时,处理超时任务队列的时候同时也处理了这个队列。

       /*
       ** Check for tasks on the timeout queue, and wake the appropriate
       ** ones up.  The timeout queue is a time-priority queue.
       */
       count = _QUEUE_GET_SIZE(&kernel_data->TIMEOUT_QUEUE);
       if (count) {
          td_ptr = (TD_STRUCT_PTR)((pointer)kernel_data->TIMEOUT_QUEUE.NEXT);
          ++count;
          while ( --count ) {
             next_td_ptr = td_ptr->TD_NEXT;
             result = PSP_CMP_TICKS(&kernel_data->TIME, &td_ptr->TIMEOUT);
             if (result >= 0) {
                --kernel_data->TIMEOUT_QUEUE.SIZE;
                _QUEUE_UNLINK(td_ptr);
                td_ptr->STATE &= ~IS_ON_TIMEOUT_Q;
                if (td_ptr->STATE & TD_IS_ON_AUX_QUEUE) {
                   td_ptr->STATE &= ~TD_IS_ON_AUX_QUEUE;
                   _QUEUE_REMOVE(td_ptr->INFO, &td_ptr->AUX_QUEUE);
                } /* Endif */
                _TASK_READY(td_ptr, kernel_data);
             } else {
                break;  /* No more to do */
             } /* Endif */
             td_ptr = next_td_ptr;
          } /* Endwhile */
       } /* Endif */

    请问,这个AUX_QUEUE队列是做什么的?
    我知道答案 目前已有3人回答
    回复

    使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2012-2-15 14:45:08 | 显示全部楼层

    RE:AUX_QUEUE队列的问题

    AUX_QUEUE应该是用来判断当前时钟的状态,用来对td_ptr->STATE 进行操作。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-1-17 10:45
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    38

    主题

    395

    帖子

    3

    高级会员

    Rank: 4

    积分
    780
    最后登录
    2023-11-17
     楼主| 发表于 2012-2-15 15:03:26 | 显示全部楼层

    回复:AUX_QUEUE队列的问题

    回复第 2 楼 于2012-02-15 06:45:08发表:
    AUX_QUEUE应该是用来判断当前时钟的状态,用来对td_ptr->STATE 进行操作。 

    能不能解释得详细一些,还是有点不明白。谢谢啦!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2012-2-15 15:46:51 | 显示全部楼层

    RE:AUX_QUEUE队列的问题

    我这里没有MQX源代码。看不到_QUEUE_REMOVE的原型,我的理解是,从空间td_ptr->INFO中删除&td_ptr->AUX_QUEUE。具体的使用,你还是要综合上下文。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2012-2-15 15:53:25 | 显示全部楼层

    RE:AUX_QUEUE队列的问题

    QUEUE_ELEMENT_STRUCT——定义队列中元素的数据结构。该结构是一个应用程序的头结构所定义的对象,这个对象正是该任务要加入到队列中的元素。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-6 11:45 , Processed in 0.096307 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表