文档详情

rt_thread操作系统线程调度器获取当前最高优先级线程算法.doc

发布:2016-04-23约字共8页下载文档
文本预览下载声明
上一章大概分析了rt-thread操作系统的线程调度器的源码,此文具体来讲讲rt-thread在调试时,是如何获取获得当前最高优先级线程的算法过程。 之前已提到过,rt-thread采用了一个位图来实现此过程,在具体分析此过程之前,我们首先来看看此位图的结构及相关的一些参数变量。 1 位图结构及相关参数 1.1 位图结构 在rt-thread的源码文件scheduler.c中在一位图映射表,如下定义: [cpp] view plaincopyprint? const?rt_uint8_t?rt_lowest_bitmap[]?=?? {?? ????/*?00?*/?0,?0,?1,?0,?2,?0,?1,?0,?3,?0,?1,?0,?2,?0,?1,?0,?? ????/*?10?*/?4,?0,?1,?0,?2,?0,?1,?0,?3,?0,?1,?0,?2,?0,?1,?0,?? ????/*?20?*/?5,?0,?1,?0,?2,?0,?1,?0,?3,?0,?1,?0,?2,?0,?1,?0,?? ????/*?30?*/?4,?0,?1,?0,?2,?0,?1,?0,?3,?0,?1,?0,?2,?0,?1,?0,?? ????/*?40?*/?6,?0,?1,?0,?2,?0,?1,?0,?3,?0,?1,?0,?2,?0,?1,?0,?? ????/*?50?*/?4,?0,?1,?0,?2,?0,?1,?0,?3,?0,?1,?0,?2,?0,?1,?0,?? ????/*?60?*/?5,?0,?1,?0,?2,?0,?1,?0,?3,?0,?1,?0,?2,?0,?1,?0,?? ????/*?70?*/?4,?0,?1,?0,?2,?0,?1,?0,?3,?0,?1,?0,?2,?0,?1,?0,?? ????/*?80?*/?7,?0,?1,?0,?2,?0,?1,?0,?3,?0,?1,?0,?2,?0,?1,?0,?? ????/*?90?*/?4,?0,?1,?0,?2,?0,?1,?0,?3,?0,?1,?0,?2,?0,?1,?0,?? ????/*?A0?*/?5,?0,?1,?0,?2,?0,?1,?0,?3,?0,?1,?0,?2,?0,?1,?0,?? ????/*?B0?*/?4,?0,?1,?0,?2,?0,?1,?0,?3,?0,?1,?0,?2,?0,?1,?0,?? ????/*?C0?*/?6,?0,?1,?0,?2,?0,?1,?0,?3,?0,?1,?0,?2,?0,?1,?0,?? ????/*?D0?*/?4,?0,?1,?0,?2,?0,?1,?0,?3,?0,?1,?0,?2,?0,?1,?0,?? ????/*?E0?*/?5,?0,?1,?0,?2,?0,?1,?0,?3,?0,?1,?0,?2,?0,?1,?0,?? ????/*?F0?*/?4,?0,?1,?0,?2,?0,?1,?0,?3,?0,?1,?0,?2,?0,?1,?0?? };?? const rt_uint8_t rt_lowest_bitmap[] = { /* 00 */ 0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 10 */ 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 20 */ 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 30 */ 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 40 */ 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 50 */ 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 60 */ 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 70 */ 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 80 */ 7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 90 */ 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* A0 */ 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
显示全部
相似文档