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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? os_cpu_c.c

?? ucos-II的中文注釋源代碼
?? 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.  
*********************************************************************************************************
*/
/*
*********************************************************************************************************
                                                     局部常量
 備注:1、OS_NTASKS_FP:建立能支持浮點(diǎn)的任務(wù)數(shù),空閑任務(wù)將被去除因?yàn)樗?                         點(diǎn)浮點(diǎn)也不會(huì)算。
                  2、OS_FP_STORAGE_SIZE:即使80x86浮點(diǎn)運(yùn)算單元只需要108字節(jié)去保存浮點(diǎn)運(yùn)算
                        內(nèi)容,但是我分配128字節(jié),作為進(jìn)一步擴(kuò)展
*********************************************************************************************************
*/



#define  OS_NTASKS_FP         (OS_MAX_TASKS + OS_N_SYS_TASKS - 1)//OS_N_SYS_TASKS 為系統(tǒng)統(tǒng)計(jì)任務(wù)
#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.                                         */
//指向內(nèi)存分割區(qū)掌握FPU存儲空間的指針。我用了32位保證在32位上是對齊模式
//它是一個(gè)指針,指向此建立的分區(qū),靜態(tài)變量,用戶程序不能訪問
static  INT32U   OSFPPart[OS_NTASKS_FP][OS_FP_STORAGE_SIZE / sizeof(INT32U)];
//OS_NTASKS_FP為支持浮點(diǎn)的任務(wù)數(shù),OS_FP_STORAGE_SIZE是浮點(diǎn)存儲空間
//OSFPPart[][]是實(shí)際的分區(qū),保存了所有任務(wù)的FPU寄存器內(nèi)容。至少要為它
//提供(OS_MAX_TASK+1)*128字節(jié)的RAM,因?yàn)樗庆o態(tài),所以用戶不能訪問
/*$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().
*********************************************************************************************************
*/
/*
*********************************************************************************************************
                                                                      初始化浮點(diǎn)指針支持
 描述:這個(gè)函數(shù)初始化需要支持任務(wù)轉(zhuǎn)換浮點(diǎn)寄存器的內(nèi)存分割區(qū)。
                  必須在調(diào)用OSInit()后再調(diào)用
參數(shù):無
返回:無
備注:1、支持浮點(diǎn)指針的任務(wù)必須由OSTaskCreateExt()建立
                 2、在80x86 FPU中,要108字節(jié)去保存FPU內(nèi)容,我準(zhǔn)備用128字節(jié)去作為進(jìn)
                     一步擴(kuò)展。也用了INT32U去保證在32位邊界線上對齊
                 3、在此函數(shù)中,你用OSTaskStatHook()又需要浮點(diǎn)運(yùn)算操作情況下,我想改變
                       它的選項(xiàng)。這只應(yīng)用于OS_TaskStat() 用 OSTaskCreateExt().建立的情況。
*********************************************************************************************************
*/


void  OSFPInit (void)//浮點(diǎn)處理單元初始化
{
    INT8U    err;
#if OS_TASK_STAT_EN && OS_TASK_CREATE_EXT_EN//允許統(tǒng)計(jì)任務(wù)和浮點(diǎn)建立任務(wù)
    OS_TCB  *ptcb;//任務(wù)控制塊
    void    *pblk;
#endif
    
    
    OSFPPartPtr = OSMemCreate(&OSFPPart[0][0], OS_NTASKS_FP, OS_FP_STORAGE_SIZE, &err);
//OSFPInit()將此分區(qū)信息告訴ucosII,OSMemCreate函數(shù)把一個(gè)內(nèi)存分區(qū)分成多塊,
//每塊128B,并將這些塊鏈成單向鏈表,當(dāng)需要一個(gè)內(nèi)存保存FPU寄存器時(shí),
//只須調(diào)用OSMemGet()函數(shù)
    
#if OS_TASK_STAT_EN && OS_TASK_CREATE_EXT_EN       /* CHANGE 'OPTIONS' for OS_TaskStat()               */
	//允許統(tǒng)計(jì)任務(wù)和浮點(diǎn)建立任務(wù),改變OS_TaskStat() 的選項(xiàng)

    ptcb            = OSTCBPrioTbl[OS_STAT_PRIO];
//改變OS_TaskStat()屬性,使之能進(jìn)行浮點(diǎn)運(yùn)算,這樣做是為了使用戶
//可以通過OS_TaskStatHook()來擴(kuò)展OS_TaskStat()函數(shù)的功能,使之可以做浮點(diǎn)運(yùn)算。
//在此,OSFPInit()得到統(tǒng)計(jì)任務(wù)的任務(wù)控制塊的指針。
    ptcb->OSTCBOpt |= OS_TASK_OPT_SAVE_FP;         /* Allow floating-point support for Statistic task  */
//指明是需要保存和恢復(fù)浮點(diǎn)寄存器的,因?yàn)橄到y(tǒng)默認(rèn)為0
    pblk            = OSMemGet(OSFPPartPtr, &err); /* Get storage for FPU registers                    */
//得到一個(gè)緩沖區(qū),用于在統(tǒng)計(jì)任務(wù)OS_TaskStat()掛起時(shí),保存該任務(wù)的浮點(diǎn)
//寄存器內(nèi)容。
    if (pblk != (void *)0) {                       /* Did we get a memory block?                       */
		//檢查得到的緩沖區(qū)是否合法
        ptcb->OSTCBExtPtr = pblk;                  /* Yes, Link to task's TCB                          */
		//合法,保存在OS_TCB的擴(kuò)展變量,OSTCBExtPtr中的指針指向
		//保存FPU的存儲區(qū)
        OSFPSave(pblk);                            /*      Save the FPU registers in block             */
		//將FPU寄存器當(dāng)前內(nèi)容保存在pblk指向的地方。
    }
#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.
*********************************************************************************************************
*/
/*
*********************************************************************************************************
                                          系統(tǒng)初始化開始接口函數(shù)
  描述:在  OSInit()開始的時(shí)候由OSInit()調(diào)用                      
*********************************************************************************************************
*/


#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.
*********************************************************************************************************
*/
/*
*********************************************************************************************************
                                               系統(tǒng)初始化結(jié)束接口函數(shù)
 描述:在OSInit()結(jié)束的時(shí)候由OSInit()調(diào)用
 備注:調(diào)用此函數(shù)時(shí)要關(guān)中斷
 此函數(shù)調(diào)用了OSFPInit(),它負(fù)責(zé)設(shè)置保留的內(nèi)存分區(qū),該內(nèi)存分區(qū)
 用來保存各任務(wù)的浮點(diǎn)寄存器
*********************************************************************************************************
*/


#if OS_CPU_HOOKS_EN > 0 && OS_VERSION > 203
void  OSInitHookEnd (void)
{
    OSFPInit();//它負(fù)責(zé)設(shè)置保留的內(nèi)存分區(qū),該內(nèi)存分區(qū)
 //用來保存各任務(wù)的浮點(diǎn)寄存器
}
#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().
*********************************************************************************************************
*/
/*
*********************************************************************************************************
                                                      任務(wù)建立接口函數(shù)
描述:任務(wù)建立的時(shí)候調(diào)用
參數(shù):ptcb:將要建立任務(wù)的任務(wù)控制塊指針
備注:1、調(diào)用的時(shí)候中斷要關(guān)閉
                2、當(dāng)我們要在OSTaskStatHook()中作計(jì)算的時(shí)候我打算改變
                       它的屬性使之能夠浮點(diǎn)運(yùn)算
                                                      
*********************************************************************************************************
*/


#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                      */
		//任務(wù)是否需要支持浮點(diǎn)
        pblk = OSMemGet(OSFPPartPtr, &err);      /* Yes, Get storage for FPU registers                */
		//需要的話,得到存儲FPU寄存器的存儲空間
        if (pblk != (void *)0) {                 /*      Did we get a memory block?                   */
			//得到的空間是否合法
            ptcb->OSTCBExtPtr = pblk;            /*      Yes, Link to task's TCB                      */
			//合法,加到任務(wù)TCB單向鏈表
            OSFPSave(pblk);                      /*           Save the FPU registers in block         */
			//將FPU寄存器當(dāng)前內(nèi)容保存在pblk指向的地方。這一過程中,F(xiàn)PU包含
          //了什么內(nèi)容不重要,重要的是,F(xiàn)PU寄存器包含了有效數(shù)值
		
        }
    }
}
#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.
*********************************************************************************************************
*/
/*
*********************************************************************************************************
                                               任務(wù)刪除接口函數(shù)
描述:當(dāng)一個(gè)任務(wù)刪除時(shí)這個(gè)函數(shù)被調(diào)用
參數(shù):ptcb:將要建立任務(wù)的任務(wù)控制塊指針
備注:1、調(diào)用的時(shí)候中斷要關(guān)閉
                2、OSTaskDel()通過調(diào)用OSTaskDelHook()函數(shù)擴(kuò)展其功能,
                因?yàn)樵诮⑷蝿?wù)時(shí),分配了一個(gè)內(nèi)存塊,用于保存浮點(diǎn)寄存器的內(nèi)容
                所以在任務(wù)刪除時(shí),需要釋放該內(nèi)存塊。

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91欧美激情一区二区三区成人| 亚洲精品成a人| 国产一区二区调教| 欧美α欧美αv大片| 麻豆成人在线观看| 亚洲精品一区二区三区影院| 国产精品1区2区| 国产精品色哟哟| 91影院在线免费观看| 亚洲电影在线播放| 日韩视频免费直播| 波多野结衣91| 一区二区三区**美女毛片| 91精品国产一区二区人妖| 精品综合久久久久久8888| 亚洲国产成人高清精品| 欧美高清精品3d| 国产一区二区不卡在线| 亚洲老司机在线| 欧美一区二区福利视频| 不卡一二三区首页| 五月天国产精品| 久久久久97国产精华液好用吗| 成人免费看片app下载| 一区二区三区日韩精品视频| 91麻豆精品国产自产在线| 国产精品99久久久| 亚洲观看高清完整版在线观看 | 麻豆免费精品视频| 久久免费偷拍视频| 91免费视频网| 狠狠久久亚洲欧美| 亚洲男人的天堂在线观看| 日韩欧美在线综合网| 成人av综合在线| 免费高清在线一区| 亚洲另类春色国产| 国产清纯白嫩初高生在线观看91| 欧美日韩国产高清一区二区三区| 国产成人亚洲综合a∨婷婷图片| 亚洲一卡二卡三卡四卡五卡| 久久精品男人的天堂| 884aa四虎影成人精品一区| 国产suv精品一区二区三区 | 日本成人中文字幕在线视频| 中文字幕乱码日本亚洲一区二区| 宅男在线国产精品| 91色.com| 懂色av一区二区夜夜嗨| 欧美aaa在线| 亚洲国产一区二区a毛片| 中文在线一区二区| 久久综合狠狠综合久久综合88| 欧美日韩亚州综合| 91原创在线视频| 成人白浆超碰人人人人| 国产精品香蕉一区二区三区| 日本欧美一区二区在线观看| 一区二区三区免费网站| 国产精品视频一二| 国产欧美一区二区精品性色超碰 | 精品伦理精品一区| 69精品人人人人| 日本精品视频一区二区| 成人动漫一区二区三区| 韩国女主播成人在线| 日本vs亚洲vs韩国一区三区| 亚洲高清不卡在线| 亚洲国产精品精华液网站| 亚洲一级片在线观看| 国产精品不卡一区二区三区| 国产欧美精品一区二区三区四区| 精品少妇一区二区三区免费观看 | 99re热这里只有精品视频| 国产乱码精品一区二区三区忘忧草| 美国十次综合导航| 日韩成人午夜电影| 青青草精品视频| 美女视频网站久久| 狠狠色丁香久久婷婷综合_中 | 6080午夜不卡| 91麻豆精品国产自产在线| 正在播放一区二区| 欧美一级国产精品| 精品国产免费人成电影在线观看四季| 51精品视频一区二区三区| 欧美日本高清视频在线观看| 欧美美女喷水视频| 日韩精品在线网站| 久久久亚洲欧洲日产国码αv| 国产视频视频一区| 中文字幕字幕中文在线中不卡视频| 成人欧美一区二区三区视频网页| 亚洲女厕所小便bbb| 亚洲高清一区二区三区| 日韩高清不卡一区二区| 国产一区在线观看麻豆| 93久久精品日日躁夜夜躁欧美| 91久久精品日日躁夜夜躁欧美| 色av综合在线| 欧美一区2区视频在线观看| 欧美成人女星排名| 亚洲欧洲色图综合| 日韩精品欧美精品| 国产久卡久卡久卡久卡视频精品| 成人黄色免费短视频| 欧美日韩中文一区| 久久综合久久综合久久综合| 亚洲欧美视频在线观看| 日本不卡高清视频| 99在线热播精品免费| 91麻豆精品国产自产在线| 日本一区二区三区在线不卡| 一区二区三区在线看| 国产在线精品免费| 欧美在线一区二区| 亚洲精品在线电影| 亚洲国产成人av网| 国产成人激情av| 91精品国产色综合久久不卡蜜臀| 国产网红主播福利一区二区| 五月婷婷综合网| av中文字幕在线不卡| 欧美mv日韩mv国产网站app| 一个色综合网站| 国产一区不卡精品| 678五月天丁香亚洲综合网| 国产精品福利av| 激情另类小说区图片区视频区| 一本一道综合狠狠老| 欧美精品一区二区不卡| 亚洲v中文字幕| 91性感美女视频| 国产午夜亚洲精品羞羞网站| 丝袜亚洲另类丝袜在线| www.在线欧美| 久久色中文字幕| 日韩精品一二三| 欧美中文字幕一二三区视频| 欧美韩日一区二区三区四区| 日韩影院在线观看| 在线精品国精品国产尤物884a| 久久青草欧美一区二区三区| 亚洲成人免费观看| 91麻豆免费看片| 国产三级精品三级在线专区| 久久精品噜噜噜成人av农村| 欧美日韩国产小视频在线观看| 日韩美女精品在线| 成人精品鲁一区一区二区| 欧美videos中文字幕| 日韩中文字幕一区二区三区| 色呦呦日韩精品| 亚洲欧洲日产国码二区| 国产精品99久久久久久有的能看| 日韩一区二区电影在线| 五月综合激情网| 2023国产精品自拍| 久草热8精品视频在线观看| 欧美一级欧美三级在线观看| 亚洲成av人综合在线观看| 欧美午夜不卡视频| 亚洲综合精品自拍| 欧美日精品一区视频| 亚洲成人自拍网| 欧美高清视频一二三区 | 久久久精品免费免费| 激情五月激情综合网| 欧美成人一区二区| 久久国产夜色精品鲁鲁99| 欧美mv日韩mv| 国产一区二区剧情av在线| 国产欧美精品一区aⅴ影院| 成人aaaa免费全部观看| 亚洲天堂精品视频| 欧美亚洲高清一区二区三区不卡| 亚洲一区免费视频| 欧美一区二区三区四区五区| 欧美aaa在线| 久久久久久亚洲综合| voyeur盗摄精品| 一区二区三区电影在线播| 欧美精品少妇一区二区三区| 日本亚洲电影天堂| 久久精品网站免费观看| 99久久婷婷国产综合精品电影| 一区二区欧美国产| 欧美一区二区视频观看视频| 国产精品综合视频| 综合久久久久久| 欧美日韩在线播放一区| 老司机精品视频线观看86| 日本一区二区免费在线| 色婷婷综合视频在线观看| 三级一区在线视频先锋| 久久毛片高清国产| 欧美性xxxxx极品少妇| 久久国产福利国产秒拍| 日韩美女视频19| 欧美大胆人体bbbb|