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

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

?? os_cpu_c.c

?? ucos操作系統(tǒng)的完整的中文注釋
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*
*********************************************************************************************************
*                                               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存儲(chǔ)空間的指針。我用了32位保證在32位上是對(duì)齊模式
//它是一個(gè)指針,指向此建立的分區(qū),靜態(tài)變量,用戶程序不能訪問(wèn)
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)存儲(chǔ)空間
//OSFPPart[][]是實(shí)際的分區(qū),保存了所有任務(wù)的FPU寄存器內(nèi)容。至少要為它
//提供(OS_MAX_TASK+1)*128字節(jié)的RAM,因?yàn)樗庆o態(tài),所以用戶不能訪問(wèn)
/*$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ù):無(wú)
返回:無(wú)
備注:1、支持浮點(diǎn)指針的任務(wù)必須由OSTaskCreateExt()建立
                 2、在80x86 FPU中,要108字節(jié)去保存FPU內(nèi)容,我準(zhǔn)備用128字節(jié)去作為進(jìn)
                     一步擴(kuò)展。也用了INT32U去保證在32位邊界線上對(duì)齊
                 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)算,這樣做是為了使用戶
//可以通過(guò)OS_TaskStatHook()來(lái)擴(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的存儲(chǔ)區(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)初始化開(kāi)始接口函數(shù)
  描述:在  OSInit()開(kāi)始的時(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ū)
 用來(lái)保存各任務(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ū)
 //用來(lái)保存各任務(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                */
		//需要的話,得到存儲(chǔ)FPU寄存器的存儲(chǔ)空間
        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指向的地方。這一過(guò)程中,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()通過(guò)調(diào)用OSTaskDelHook()函數(shù)擴(kuò)展其功能,
                因?yàn)樵诮⑷蝿?wù)時(shí),分配了一個(gè)內(nèi)存塊,用于保存浮點(diǎn)寄存器的內(nèi)容
                所以在任務(wù)刪除時(shí),需要釋放該內(nèi)存塊。

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区在线看| 大陆成人av片| 国产精品福利一区| 欧美视频自拍偷拍| 国产精品911| 男男gaygay亚洲| 一区二区三区产品免费精品久久75| 欧美日韩综合在线| jlzzjlzz国产精品久久| 老司机午夜精品99久久| 亚洲自拍另类综合| 国产精品久久久久久亚洲伦| 精品国产一区二区三区不卡| 欧美日韩一区 二区 三区 久久精品| 亚洲第一狼人社区| 中文字幕欧美日韩一区| 7777精品伊人久久久大香线蕉| 国产成人鲁色资源国产91色综| 日韩精品久久久久久| 亚洲自拍与偷拍| 亚洲成a人v欧美综合天堂| 亚洲色图视频网站| 国产精品视频yy9299一区| 日韩欧美国产一区二区在线播放| 欧美日韩综合在线免费观看| 欧美中文一区二区三区| 色视频欧美一区二区三区| youjizz久久| 91丝袜美女网| 欧美自拍偷拍午夜视频| 欧美天堂一区二区三区| 欧美人狂配大交3d怪物一区 | 国产一区二区伦理片| 九九视频精品免费| 国产91富婆露脸刺激对白| 成人丝袜高跟foot| 99久久夜色精品国产网站| 91麻豆国产福利精品| 欧美三日本三级三级在线播放| 欧美日韩aaaaaa| 欧美va天堂va视频va在线| 久久网站最新地址| 国产精品电影院| 亚洲大片在线观看| 一区二区三区四区五区视频在线观看 | 日韩欧美一级精品久久| 久久色视频免费观看| 中文字幕亚洲成人| 日韩精品电影一区亚洲| 成人午夜精品一区二区三区| 日本精品视频一区二区| 26uuu精品一区二区| 一区二区三区欧美亚洲| 国产酒店精品激情| 欧美中文字幕一二三区视频| 久久九九久精品国产免费直播| 亚洲gay无套男同| aaa亚洲精品| 久久亚洲精精品中文字幕早川悠里| 日韩毛片精品高清免费| 久久99日本精品| 国产日韩视频一区二区三区| 亚洲日本中文字幕区| 奇米精品一区二区三区在线观看 | 在线免费观看视频一区| 久久久www免费人成精品| 午夜电影一区二区三区| 日本乱码高清不卡字幕| 国产精品乱人伦| 丁香婷婷综合激情五月色| 久久伊99综合婷婷久久伊| 蜜臀av一区二区在线观看| 9191精品国产综合久久久久久| 亚洲视频 欧洲视频| 成人做爰69片免费看网站| 久久一日本道色综合| 精品中文字幕一区二区小辣椒| 欧美日韩mp4| 久久国产精品72免费观看| 欧美成人精品福利| 国产成人午夜99999| 欧美韩日一区二区三区| 99久久精品国产麻豆演员表| 中文字幕视频一区二区三区久| 成人18视频日本| 亚洲一卡二卡三卡四卡五卡| 欧美日韩在线直播| 青草国产精品久久久久久| 日韩精品资源二区在线| 国产精品一区二区黑丝| 国产欧美一区二区精品性| 成人午夜私人影院| 亚洲一区二区三区自拍| 日韩小视频在线观看专区| 国产一区二区三区在线观看免费 | 99久久久精品| 日韩主播视频在线| 日韩一区在线播放| 国产真实乱对白精彩久久| 91久久精品午夜一区二区| 精品少妇一区二区三区免费观看 | 久久精品亚洲精品国产欧美| 成人夜色视频网站在线观看| 亚洲国产欧美另类丝袜| 97久久超碰国产精品电影| 青娱乐精品在线视频| 亚洲色图第一区| 精品久久久久久久久久久院品网 | 精品国产电影一区二区| 91欧美激情一区二区三区成人| 秋霞电影一区二区| 亚洲欧美一区二区三区极速播放| 久久色中文字幕| 日韩一区二区精品在线观看| 91福利视频在线| k8久久久一区二区三区 | 99久久精品免费| 国产九色sp调教91| 久草热8精品视频在线观看| 亚洲成a人片在线不卡一二三区 | 国产综合久久久久影院| 一二三四社区欧美黄| 亚洲欧美日韩中文字幕一区二区三区 | 精品一区二区三区的国产在线播放| 一区二区日韩电影| 尤物av一区二区| 亚洲欧美乱综合| 亚洲精品乱码久久久久久| 亚洲精品五月天| 夜夜嗨av一区二区三区中文字幕| 中文字幕视频一区| 亚洲欧美国产毛片在线| 亚洲视频资源在线| 尤物视频一区二区| 天天影视网天天综合色在线播放 | 欧美日韩中文国产| 正在播放亚洲一区| 欧美成人女星排行榜| 国产午夜精品一区二区| 国产欧美精品一区二区色综合朱莉 | 偷拍一区二区三区四区| 久久精品国产秦先生| 国产在线播放一区三区四| 成人深夜在线观看| 一本大道av一区二区在线播放 | 亚洲aaa精品| 国产乱子伦视频一区二区三区 | 成人av片在线观看| 91福利在线导航| 精品福利一区二区三区免费视频| 中文字幕av一区二区三区免费看| 亚洲欧美视频在线观看| 香蕉加勒比综合久久| 国产裸体歌舞团一区二区| 蜜桃久久久久久久| 一区二区在线免费观看| 亚洲成av人影院在线观看网| 国产精品996| 欧美麻豆精品久久久久久| 久久精品一区二区| 日本午夜一区二区| 91丨九色丨黑人外教| 欧美激情在线看| 美女网站一区二区| 欧美日韩中字一区| 亚洲另类中文字| 99视频精品全部免费在线| 日韩你懂的在线播放| 图片区小说区区亚洲影院| 91国偷自产一区二区三区观看 | 亚洲免费观看高清完整版在线观看 | 国产欧美日韩不卡免费| 国内外成人在线视频| 欧美在线观看一区二区| 国产精品久久久久久久午夜片 | 91丨九色丨黑人外教| 国产精品乱人伦一区二区| 丁香五精品蜜臀久久久久99网站 | 综合色中文字幕| 99久久精品国产精品久久| 一色屋精品亚洲香蕉网站| 国产成人在线视频网站| 久久久久久久综合| 成人av电影在线观看| 中文字幕日韩av资源站| 91免费看`日韩一区二区| 亚洲免费毛片网站| 欧美日韩国产一级二级| 秋霞国产午夜精品免费视频| 欧美电视剧在线看免费| 国产精品综合视频| 中文字幕一区二区三区视频| 在线视频你懂得一区二区三区| 亚洲一区二区黄色| 欧美成人a在线| av在线播放不卡| 日韩成人精品视频| 亚洲国产电影在线观看| 欧美日韩在线三级| 国产99久久久国产精品潘金网站|