亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? os_cpu_c.c

?? 《嵌入式實時操作系統μC/OS-Ⅱ》的源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
*********************************************************************************************************
*                                               uC/OS-II
*                                         The Real-Time Kernel
*
*                        (c) Copyright 1992-2002, Jean J. Labrosse, Weston, FL
*                                          All Rights Reserved
*
*                                          80x86 Specific code
*                                 LARGE MEMORY MODEL WITH FLOATING-POINT
*                                          Borland C/C++ V4.51
*
*
* File         : OS_CPU_C.C
* By           : Jean J. Labrosse
*********************************************************************************************************
*/

#define  OS_CPU_GLOBALS
#include "includes.h"

/*$PAGE*/
/*
*********************************************************************************************************
*                                             LOCAL CONSTANTS
*
* Note(s) : 1) OS_NTASKS_FP  establishes the number of tasks capable of supporting floating-point.  One
*              task is removed for the idle task because it doesn't do floating-point at all.
*           2) OS_FP_STORAGE_SIZE  currently allocates 128 bytes of storage even though the 80x86 FPU 
*              only require 108 bytes to save the FPU context.  I decided to allocate 128 bytes for 
*              future expansion.  
*********************************************************************************************************
*/

#define  OS_NTASKS_FP         (OS_MAX_TASKS + OS_N_SYS_TASKS - 1)
#define  OS_FP_STORAGE_SIZE   128

/*
*********************************************************************************************************
*                                             LOCAL VARIABLES
*********************************************************************************************************
*/

static  OS_MEM  *OSFPPartPtr;          /* Pointer to memory partition holding FPU storage areas        */

                                       /* I used INT32U to ensure that storage is aligned on a ...     */
                                       /* ... 32-bit boundary.                                         */
static  INT32U   OSFPPart[OS_NTASKS_FP][OS_FP_STORAGE_SIZE / sizeof(INT32U)];

/*$PAGE*/
/*
*********************************************************************************************************
*                                        INITIALIZE FP SUPPORT
*
* Description: This function is called to initialize the memory partition needed to support context
*              switching the Floating-Point registers.  This function MUST be called AFTER calling
*              OSInit().
*
* Arguments  : none
*
* Returns    : none
*
* Note(s)    : 1) Tasks that are to use FP support MUST be created with OSTaskCreateExt().
*              2) For the 80x86 FPU, 108 bytes are required to save the FPU context.  I decided to
*                 allocate 128 bytes for future expansion.  Also, I used INT32U to ensure that storage 
*                 is aligned on a 32-bit boundary.
*              3) I decided to 'change' the 'Options' attribute for the statistic task in case you
*                 use OSTaskStatHook() and need to perform floating-point operations in this function.
*                 This only applies if OS_TaskStat() was created with OSTaskCreateExt().
*********************************************************************************************************
*/

void  OSFPInit (void)
{
    INT8U    err;
#if OS_TASK_STAT_EN && OS_TASK_CREATE_EXT_EN
    OS_TCB  *ptcb;
    void    *pblk;
#endif
    
    
    OSFPPartPtr = OSMemCreate(&OSFPPart[0][0], OS_NTASKS_FP, OS_FP_STORAGE_SIZE, &err);
    
#if OS_TASK_STAT_EN && OS_TASK_CREATE_EXT_EN       /* CHANGE 'OPTIONS' for OS_TaskStat()               */
    ptcb            = OSTCBPrioTbl[OS_STAT_PRIO];
    ptcb->OSTCBOpt |= OS_TASK_OPT_SAVE_FP;         /* Allow floating-point support for Statistic task  */
    pblk            = OSMemGet(OSFPPartPtr, &err); /* Get storage for FPU registers                    */
    if (pblk != (void *)0) {                       /* Did we get a memory block?                       */
        ptcb->OSTCBExtPtr = pblk;                  /* Yes, Link to task's TCB                          */
        OSFPSave(pblk);                            /*      Save the FPU registers in block             */
    }
#endif
}

/*$PAGE*/
/*
*********************************************************************************************************
*                                       OS INITIALIZATION HOOK
*                                            (BEGINNING)
*
* Description: This function is called by OSInit() at the beginning of OSInit().
*
* Arguments  : none
*
* Note(s)    : 1) Interrupts should be disabled during this call.
*********************************************************************************************************
*/
#if OS_CPU_HOOKS_EN > 0 && OS_VERSION > 203
void  OSInitHookBegin (void)
{
}
#endif

/*
*********************************************************************************************************
*                                       OS INITIALIZATION HOOK
*                                               (END)
*
* Description: This function is called by OSInit() at the end of OSInit().
*
* Arguments  : none
*
* Note(s)    : 1) Interrupts should be disabled during this call.
*********************************************************************************************************
*/
#if OS_CPU_HOOKS_EN > 0 && OS_VERSION > 203
void  OSInitHookEnd (void)
{
    OSFPInit();
}
#endif

/*$PAGE*/
/*
*********************************************************************************************************
*                                          TASK CREATION HOOK
*
* Description: This function is called when a task is created.
*
* Arguments  : ptcb   is a pointer to the task control block of the task being created.
*
* Note(s)    : 1) Interrupts are disabled during this call.
*              2) I decided to change the options on the statistic task to allow for floating-point in
*                 case you decide to do math. in OSTaskStatHook().
*********************************************************************************************************
*/
#if OS_CPU_HOOKS_EN > 0
void OSTaskCreateHook (OS_TCB *ptcb)
{
    INT8U  err;
    void  *pblk;
    
    
    if (ptcb->OSTCBOpt & OS_TASK_OPT_SAVE_FP) {  /* See if task needs FP support                      */
        pblk = OSMemGet(OSFPPartPtr, &err);      /* Yes, Get storage for FPU registers                */
        if (pblk != (void *)0) {                 /*      Did we get a memory block?                   */
            ptcb->OSTCBExtPtr = pblk;            /*      Yes, Link to task's TCB                      */
            OSFPSave(pblk);                      /*           Save the FPU registers in block         */
        }
    }
}
#endif

/*
*********************************************************************************************************
*                                           TASK DELETION HOOK
*
* Description: This function is called when a task is deleted.
*
* Arguments  : ptcb   is a pointer to the task control block of the task being deleted.
*
* Note(s)    : 1) Interrupts are disabled during this call.
*********************************************************************************************************
*/
#if OS_CPU_HOOKS_EN > 0
void OSTaskDelHook (OS_TCB *ptcb)
{
    if (ptcb->OSTCBOpt & OS_TASK_OPT_SAVE_FP) {            /* See if task had FP support               */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品精品亚洲| 一区二区三区成人| 国产人妖乱国产精品人妖| 亚洲免费看黄网站| 国产精品2024| 91麻豆精品国产91久久久更新时间 | 北条麻妃一区二区三区| 欧美一区二区三区日韩| 一区二区三区在线视频播放| 成人av午夜影院| 久久久美女毛片| 美女爽到高潮91| 在线观看免费成人| 亚洲三级在线免费观看| 国产精品123| 欧美电影免费提供在线观看| 亚洲1区2区3区4区| 色视频一区二区| 亚洲少妇30p| eeuss影院一区二区三区| 国产亚洲欧美激情| 国内精品国产成人国产三级粉色| 91精品国产综合久久精品图片| 亚洲美女视频在线| 91在线免费视频观看| 国产精品久久久久三级| 欧美激情自拍偷拍| 亚洲高清免费视频| 色94色欧美sute亚洲13| 椎名由奈av一区二区三区| 国产福利91精品一区| 亚洲欧美日韩一区二区三区在线观看| 国产精品亚洲а∨天堂免在线| 欧美mv和日韩mv的网站| 青青草国产成人99久久| 久久久精品人体av艺术| 六月丁香婷婷久久| 精品久久久久香蕉网| 奇米在线7777在线精品| 欧美一级理论性理论a| 欧美aaaaaa午夜精品| 欧美一区二区视频免费观看| 日本成人在线一区| 欧美tickling网站挠脚心| 精品亚洲国产成人av制服丝袜| 欧美mv日韩mv国产| 成人中文字幕在线| 亚洲人成网站精品片在线观看| 91麻豆免费看| 午夜精品在线看| 日韩一区二区中文字幕| 国产一区二区三区四区在线观看 | 91美女在线看| 激情五月婷婷综合| 亚洲国产精品久久不卡毛片| 成人精品一区二区三区四区 | 99视频有精品| 中文字幕一区二| 欧美网站一区二区| 免费成人在线网站| 国产日韩欧美不卡在线| 91女人视频在线观看| 亚洲成人三级小说| 精品久久久久久无| 成人avav影音| 亚洲图片欧美色图| 久久亚洲欧美国产精品乐播| av男人天堂一区| 午夜精品123| 久久精品欧美一区二区三区麻豆| 成人av在线资源网站| 亚洲一区二区精品视频| 欧美mv和日韩mv的网站| 不卡一区二区三区四区| 视频一区视频二区中文| 日本一区二区免费在线观看视频| 91美女视频网站| 卡一卡二国产精品| 亚洲柠檬福利资源导航| 精品乱码亚洲一区二区不卡| 91猫先生在线| 国产综合久久久久影院| 一区二区激情视频| 久久久久久久久一| 7777精品伊人久久久大香线蕉超级流畅| 国产自产v一区二区三区c| 亚洲国产aⅴ成人精品无吗| 久久网这里都是精品| 国产精品国产自产拍高清av王其| 91麻豆精品国产91久久久久| 99re热这里只有精品免费视频| 另类综合日韩欧美亚洲| 亚洲成av人影院| 日韩一区中文字幕| 久久久美女毛片| 这里只有精品视频在线观看| 91蜜桃在线免费视频| 粉嫩一区二区三区在线看| 美女任你摸久久| 天堂久久久久va久久久久| 综合久久国产九一剧情麻豆| 国产亚洲精品aa午夜观看| 69久久99精品久久久久婷婷| 91黄视频在线观看| 不卡免费追剧大全电视剧网站| 久久精品99国产国产精| 日本不卡在线视频| 五月天中文字幕一区二区| 亚洲一区在线观看视频| 18成人在线观看| 亚洲日本一区二区三区| ㊣最新国产の精品bt伙计久久| 国产精品无遮挡| 国产精品区一区二区三| 国产精品乱人伦中文| 国产精品久久久久久久久久免费看 | 亚洲一线二线三线久久久| 久久蜜桃av一区精品变态类天堂 | 亚洲三级在线免费| 国产精品麻豆网站| 中文一区二区在线观看| 国产精品视频yy9299一区| 欧美激情一区二区| 亚洲欧洲av一区二区三区久久| 中文字幕一区三区| 亚洲啪啪综合av一区二区三区| 亚洲日本韩国一区| 一区二区三区中文字幕| 在线播放/欧美激情| 欧美系列亚洲系列| 欧美日韩国产123区| 7777精品伊人久久久大香线蕉 | 国产精品996| caoporm超碰国产精品| 色妞www精品视频| 欧美怡红院视频| 91精品国产综合久久久久久| 2021久久国产精品不只是精品| 国产亚洲一区二区三区| 亚洲桃色在线一区| 亚洲超碰精品一区二区| 精品一区二区三区蜜桃| 成人手机在线视频| 在线亚洲一区观看| 欧美一区2区视频在线观看| 精品国产乱码久久久久久闺蜜| 中文字幕av免费专区久久| 亚洲欧美福利一区二区| 秋霞电影网一区二区| 精品一区二区三区视频在线观看| 成人精品视频.| 欧美日本一区二区三区| 色播五月激情综合网| 色88888久久久久久影院野外| 欧美久久久久久久久| 久久精品免视看| 一区二区三国产精华液| 久久99国产精品免费网站| 91影视在线播放| 日韩精品最新网址| 国产在线不卡视频| 色呦呦日韩精品| 精品久久免费看| 亚洲影院理伦片| 国产精品18久久久久久久久久久久| 欧美自拍丝袜亚洲| 国产欧美一区视频| 日本亚洲免费观看| 91丨porny丨首页| 久久综合精品国产一区二区三区| 一区二区高清视频在线观看| 国产成人免费高清| 日韩欧美国产一二三区| 亚洲一区在线播放| 91免费精品国自产拍在线不卡| 亚洲精品在线免费播放| 日韩国产一区二| 欧美性xxxxxx少妇| 亚洲精品亚洲人成人网| 成人免费福利片| 日本一区免费视频| 国产精品一二三区| 日韩一级欧美一级| 日本中文在线一区| 欧美精品乱码久久久久久按摩| 亚洲欧美一区二区三区孕妇| 成人亚洲一区二区一| 2023国产精华国产精品| 精品一区二区在线免费观看| 777久久久精品| 日韩影院免费视频| 欧美日产在线观看| 亚洲bt欧美bt精品777| 在线看日本不卡| 亚洲另类色综合网站| 在线亚洲高清视频| 亚洲小说春色综合另类电影| 91福利区一区二区三区| 一区二区三区在线看| 欧美午夜电影一区|