当前位置: 首页 > news >正文

freertos关键函数理解 uxListRemove


//删除pxItemToRemove节点
UBaseType_t uxListRemove(ListItem_t *pxItemToRemove)
{              
//The list item knows which list it is in.  Obtain the list from the list item.
//找到节点所在的链表

    //my_printf( "uxListRemove pxItemToRemove = %#p\n", pxItemToRemove );

    
List_t *pxList = pxItemToRemove->pxContainer;


List_t *pxList_;          //指向目标优先级的就绪任务列表 (通过TCB的优先级索引)
//pxList_ = &pxReadyTasksLists[4];

        

    //my_printf( "pxList = %#p\n", pxList );
//my_printf( "pxList->uxNumberOfItems = %d\n", pxList->uxNumberOfItems );
//my_printf( "&pxList->uxNumberOfItems = %#p\n", &pxList->uxNumberOfItems );
//my_printf( "pxList->pxIndex = %#p\n", pxList->pxIndex );
//my_printf( "&pxList->pxIndex = %#p\n", &pxList->pxIndex );
//my_printf( "pxList->pxIndex->pvOwner = %#p\n", pxList->pxIndex->pvOwner );
//my_printf( "pxList->pxIndex->pxContainer = %#p\n", pxList->pxIndex->pxContainer );

    //|------->volatile UBaseType_t uxNumberOfItems = 1  0x20000088  链表中元素的个数          
//| |<-----ListItem_t *pxIndex;                         0x2000008c  总是指向xListEnd节点,在链表尾部插入的时候,方便找到位置
//| |  |-->TickType_t xItemValue = portMAX_DELAY     0x20000090  [MiniListItem_t xListEnd]   
//| |  |   struct xLIST_ITEM *pxNext;     ----->|    0x20000094  后继节点
//| |  |   struct xLIST_ITEM *pxPrevious; ----->|    0x20000098  前驱节点    
//| |  |                                        |                  
//| |--|-->TickType_t xItemValue; <-------------|    0x200004ac  链表节点的值        
//|    |<--struct xLIST_ITEM *pxNext;                            后继节点
//|    |<--struct xLIST_ITEM *pxPrevious;                        前驱节点
//|        void *pvOwner;                            0x200004a8  保存私有数据         [ &TCB ]
//|<------ struct xLIST *pxContainer;                0x20000088  节点所在的链表 [ &pxReadyTasksLists[x] ]

    pxItemToRemove->pxNext->pxPrevious = pxItemToRemove->pxPrevious;
pxItemToRemove->pxPrevious->pxNext = pxItemToRemove->pxNext;

    //Make sure the index is left pointing to a valid item. 
if( pxList->pxIndex == pxItemToRemove ){
pxList->pxIndex = pxItemToRemove->pxPrevious;
}
pxItemToRemove->pxContainer = NULL;
pxList->uxNumberOfItems--;


//         volatile UBaseType_t uxNumberOfItems = 0  0x20000088  链表中元素的个数          
//  |<-----ListItem_t *pxIndex;                         0x2000008c  总是指向xListEnd节点,在链表尾部插入的时候,方便找到位置
//  |->|-->TickType_t xItemValue = portMAX_DELAY     0x20000090  [MiniListItem_t xListEnd]   
//     |<--struct xLIST_ITEM *pxNext;                0x20000094  后继节点
//     |<--struct xLIST_ITEM *pxPrevious;            0x20000098  前驱节点    


//返回剩余节点数
return pxList->uxNumberOfItems;
}

http://www.xdnf.cn/news/1166473.html

相关文章:

  • 拼多多视觉算法面试30问全景精解
  • 【AI时代速通QT】第五节:Qt Creator如何引入第三方库,以OpenCV为例
  • 《汇编语言:基于X86处理器》第9章 字符串和数组(2)
  • 库制作与原理
  • Vue 3 面试题全套题库
  • Elasticsearch安装指南
  • 【集群】MySQL的主从复制了解吗?会有延迟吗,原因是什么?
  • AngularJS 动画
  • RabbitMQ--批量处理
  • Linux 内核与底层开发
  • Axios 二次封装
  • 用org.apache.pdfbox 转换 PDF 到 图片格式
  • EMA《2025-2028年药品监管中的数据与AI 1.3版》信息分析
  • OEC 刷机Armbain 25.05后配置说明
  • 扣子Coze智能体实战:自动化拆解抖音对标账号,输出完整分析报告(喂饭级教程)
  • Java 大视界 -- Java 大数据在智能医疗医疗设备维护与管理中的应用(358)
  • Apache Ignite 中乐观事务(OPTIMISTIC Transactions)的工作机制
  • Rabbit安装
  • 全星FMEA软件系统:FMEA、PC、PFD一体化管理的智能解决方案
  • python中 tqdm ,itertuples 是什么
  • ucharts 搭配uniapp 自定义x轴文字 实现截取显示
  • Vue开发常用
  • 医院信息系统(HIS)切换实施方案与管理技术分析
  • IO复用(多路转接)
  • ob导出租户所有表记录
  • PHP 文件上传
  • Android KTX:让Kotlin开发更简洁高效的利器
  • vue2使用v-viewer实现自动预览
  • ArcGIS地形起伏度计算
  • 假发行业数字化突围,外贸ERP重构外协管理引擎,助力效率飞跃