当前位置:  技术问答>linux和unix

ucos.c相关问题

    来源: 互联网  发布时间:2016-08-07

    本文导语:  /* ************************************************************ *                         UCOS.C *                         KERNEL ************************************************************ */ #include "INCLUDES.H" #ifdef   TURBOC...

/*
************************************************************
*                         UCOS.C
*                         KERNEL
************************************************************
*/
#include "INCLUDES.H"
#ifdef   TURBOC
#pragma  inline
#endif
/*
************************************************************
*                         TABLES
************************************************************
*/
UBYTE const OSMapTbl[]   = {0x01, 0x02, 0x04, 0x08,
                            0x10, 0x20, 0x40, 0x80};
UBYTE const OSUnMapTbl[] = {
    0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
    5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
    6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
    5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
    7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
    5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
    6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
    5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0};
/*
************************************************************
*                GLOBAL AND LOCAL VARIABLES
************************************************************
*/
        OS_TCB     *OSTCBCur;
        OS_TCB     *OSTCBHighRdy;
        OS_TCB     *OSTCBList;
        OS_TCB     *OSTCBPrioTbl[64];
        BOOLEAN     OSRunning;
        UBYTE       OSRdyGrp;
        UBYTE       OSRdyTbl[8];
        UBYTE       OSLockNesting;
        UBYTE       OSIntNesting;
        OS_TCB     *OSTCBFreeList;
/*
************************************************************
*                LOCAL FUNCTION PROTOTYPES
************************************************************
*/
static void  far   OSTaskIdle(void *data);
/*
************************************************************
*                   uCOS INITIALIZATION
************************************************************
*/
void OSInit(void *idle_task_stk, UBYTE maxtasks)
{
    UBYTE i;


    OSTCBCur      = (OS_TCB *)0;
    OSTCBList     = (OS_TCB *)0;
    OSIntNesting  = 0;
    OSLockNesting = 0;
    OSRunning     = 0;
    OSRdyGrp      = 0;
    for (i = 0; i OSTCBDly == 0) {
                p                 = ptcb->OSTCBPrio;
                OSRdyGrp         |= OSMapTbl[p >> 3];
                OSRdyTbl[p >> 3] |= OSMapTbl[p & 0x07];
            }
        }
        OS_EXIT_CRITICAL();
        ptcb = ptcb->OSTCBNext;
    }
}
/*
************************************************************
*                GET TCB FROM FREE TCB LIST
************************************************************
*/
OS_TCB *OSTCBGetFree(void)
{
    OS_TCB *ptcb;


    OS_ENTER_CRITICAL();
    ptcb          = OSTCBFreeList;
    OSTCBFreeList = ptcb->OSTCBNext;
    OS_EXIT_CRITICAL();
    return (ptcb);
}
     


有没有相关人士帮我分析一下是什么意思。我实在是看不太明白 谢谢大家了。

|
很简单的,那个表是用来快速找出当前最高优先级的就绪任务。

|
注释太少,也不知道程序是干啥用的,没有头文件,很多类型都不知道是什么。无从下手。

|
建议楼主邵贝贝那本书,讲的很好。
没有时间就找本薄的ucos2书籍看看。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 谁能讲讲unix和ucos的区别与联系?
  • 基于ucos系统的嵌入式研发
  • 求解ucos ii的一句代码
  • 深入uCOS中全局变量的使用详解


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3