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

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

?? os_cpu_c.c

?? ucos操作系統的完整的中文注釋
?? 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:建立能支持浮點的任務數,空閑任務將被去除因為它一
                         點浮點也不會算。
                  2、OS_FP_STORAGE_SIZE:即使80x86浮點運算單元只需要108字節去保存浮點運算
                        內容,但是我分配128字節,作為進一步擴展
*********************************************************************************************************
*/



#define  OS_NTASKS_FP         (OS_MAX_TASKS + OS_N_SYS_TASKS - 1)//OS_N_SYS_TASKS 為系統統計任務
#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.                                         */
//指向內存分割區掌握FPU存儲空間的指針。我用了32位保證在32位上是對齊模式
//它是一個指針,指向此建立的分區,靜態變量,用戶程序不能訪問
static  INT32U   OSFPPart[OS_NTASKS_FP][OS_FP_STORAGE_SIZE / sizeof(INT32U)];
//OS_NTASKS_FP為支持浮點的任務數,OS_FP_STORAGE_SIZE是浮點存儲空間
//OSFPPart[][]是實際的分區,保存了所有任務的FPU寄存器內容。至少要為它
//提供(OS_MAX_TASK+1)*128字節的RAM,因為它是靜態,所以用戶不能訪問
/*$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().
*********************************************************************************************************
*/
/*
*********************************************************************************************************
                                                                      初始化浮點指針支持
 描述:這個函數初始化需要支持任務轉換浮點寄存器的內存分割區。
                  必須在調用OSInit()后再調用
參數:無
返回:無
備注:1、支持浮點指針的任務必須由OSTaskCreateExt()建立
                 2、在80x86 FPU中,要108字節去保存FPU內容,我準備用128字節去作為進
                     一步擴展。也用了INT32U去保證在32位邊界線上對齊
                 3、在此函數中,你用OSTaskStatHook()又需要浮點運算操作情況下,我想改變
                       它的選項。這只應用于OS_TaskStat() 用 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);
//OSFPInit()將此分區信息告訴ucosII,OSMemCreate函數把一個內存分區分成多塊,
//每塊128B,并將這些塊鏈成單向鏈表,當需要一個內存保存FPU寄存器時,
//只須調用OSMemGet()函數
    
#if OS_TASK_STAT_EN && OS_TASK_CREATE_EXT_EN       /* CHANGE 'OPTIONS' for OS_TaskStat()               */
	//允許統計任務和浮點建立任務,改變OS_TaskStat() 的選項

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


#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.
*********************************************************************************************************
*/
/*
*********************************************************************************************************
                                               系統初始化結束接口函數
 描述:在OSInit()結束的時候由OSInit()調用
 備注:調用此函數時要關中斷
 此函數調用了OSFPInit(),它負責設置保留的內存分區,該內存分區
 用來保存各任務的浮點寄存器
*********************************************************************************************************
*/


#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().
*********************************************************************************************************
*/
/*
*********************************************************************************************************
                                                      任務建立接口函數
描述:任務建立的時候調用
參數:ptcb:將要建立任務的任務控制塊指針
備注:1、調用的時候中斷要關閉
                2、當我們要在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                */
		//需要的話,得到存儲FPU寄存器的存儲空間
        if (pblk != (void *)0) {                 /*      Did we get a memory block?                   */
			//得到的空間是否合法
            ptcb->OSTCBExtPtr = pblk;            /*      Yes, Link to task's TCB                      */
			//合法,加到任務TCB單向鏈表
            OSFPSave(pblk);                      /*           Save the FPU registers in block         */
			//將FPU寄存器當前內容保存在pblk指向的地方。這一過程中,FPU包含
          //了什么內容不重要,重要的是,FPU寄存器包含了有效數值
		
        }
    }
}
#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.
*********************************************************************************************************
*/
/*
*********************************************************************************************************
                                               任務刪除接口函數
描述:當一個任務刪除時這個函數被調用
參數:ptcb:將要建立任務的任務控制塊指針
備注:1、調用的時候中斷要關閉
                2、OSTaskDel()通過調用OSTaskDelHook()函數擴展其功能,
                因為在建立任務時,分配了一個內存塊,用于保存浮點寄存器的內容
                所以在任務刪除時,需要釋放該內存塊。

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日av在线不卡| 成人精品视频网站| av资源网一区| 日韩美女一区二区三区四区| 亚洲青青青在线视频| 国产精品白丝jk白祙喷水网站| 色婷婷综合久久久| 国产精品美女久久久久久久| 日本成人超碰在线观看| 在线观看国产一区二区| 中文字幕国产精品一区二区| 久久69国产一区二区蜜臀| 欧美系列在线观看| 亚洲欧美区自拍先锋| 国产成人免费视频| 国产网站一区二区三区| 九九九精品视频| 欧美一区二区三区婷婷月色| 亚洲激情在线激情| 日本高清视频一区二区| 亚洲欧美乱综合| av成人老司机| 中文字幕视频一区| 成人不卡免费av| 国产精品久久毛片| 99久久国产综合精品麻豆| 国产日韩欧美精品在线| 国产精品自在欧美一区| 亚洲三级在线免费| 国产精品嫩草影院com| 国产做a爰片久久毛片| 日韩欧美久久久| 美女诱惑一区二区| 日韩欧美国产一二三区| 日本中文字幕不卡| 欧美成人激情免费网| 久久疯狂做爰流白浆xx| 精品国产精品一区二区夜夜嗨| 久久99热这里只有精品| 精品88久久久久88久久久| 国产精品一区二区无线| 国产精品拍天天在线| 99国产精品久久久久久久久久久 | 久久精品国产久精国产| 日韩免费高清av| 国产成人在线观看免费网站| 国产精品五月天| 91久久国产最好的精华液| 亚洲电影你懂得| 日韩欧美一级二级| 丁香婷婷综合激情五月色| 成人免费小视频| 欧美日韩国产高清一区二区三区 | 欧美成人精品1314www| 国产精品中文有码| 日韩伦理免费电影| 91 com成人网| 国产一区视频网站| 亚洲精品国久久99热| 91精品国产91热久久久做人人| 国产在线视频一区二区三区| |精品福利一区二区三区| 欧美另类变人与禽xxxxx| 国内一区二区视频| 一区二区三区四区五区视频在线观看| 欧美日韩高清一区二区| 激情国产一区二区| 亚洲小说欧美激情另类| 久久综合色8888| 91福利区一区二区三区| 国产麻豆精品久久一二三| 一区二区三区成人在线视频| 久久在线免费观看| 欧美少妇bbb| 粉嫩高潮美女一区二区三区| 亚洲第一会所有码转帖| 国产精品美女视频| 91精品黄色片免费大全| 91麻豆免费观看| 国产精品一区二区视频| 香蕉成人啪国产精品视频综合网| 国产欧美一区二区精品仙草咪 | 性欧美疯狂xxxxbbbb| 国产精品免费丝袜| 欧美一级黄色大片| 欧美日韩一区不卡| av男人天堂一区| 国产精品一区二区三区99| 性做久久久久久久免费看| 日韩毛片一二三区| 国产欧美日韩综合| 精品精品国产高清a毛片牛牛 | 美国精品在线观看| 亚洲一线二线三线久久久| 国产欧美精品一区二区色综合朱莉| 欧美日韩高清影院| 欧洲av在线精品| 91色乱码一区二区三区| 国产乱码精品一品二品| 日韩高清不卡一区| 亚洲成人动漫在线观看| 亚洲精品大片www| 成人欧美一区二区三区黑人麻豆 | 午夜伊人狠狠久久| 一区二区三区日韩精品| 亚洲天堂a在线| 亚洲精品精品亚洲| 亚洲综合免费观看高清在线观看| 中文字幕在线观看不卡| 国产精品女主播av| 欧美韩日一区二区三区四区| 国产欧美日韩另类一区| 国产日产欧美精品一区二区三区| 欧美tk—视频vk| 精品国产乱子伦一区| 久久久精品欧美丰满| 精品国产一区二区三区久久影院| 欧美天堂亚洲电影院在线播放| 蜜臀av性久久久久蜜臀av麻豆 | 一区在线播放视频| 国产精品日韩成人| 亚洲色图都市小说| 亚洲日本免费电影| 亚洲女女做受ⅹxx高潮| 亚洲女同ⅹxx女同tv| 亚洲同性同志一二三专区| 亚洲欧洲精品一区二区精品久久久 | 欧美大片国产精品| 欧美xxxx老人做受| 精品久久五月天| 26uuu色噜噜精品一区二区| 欧美日韩国产一区二区三区地区| 717成人午夜免费福利电影| 欧美美女视频在线观看| 欧美日韩的一区二区| 欧美日韩三级在线| 6080国产精品一区二区| 日韩欧美中文一区| 日韩一区二区免费视频| 91麻豆精品国产综合久久久久久 | 亚洲一二三四在线| 亚洲成人av一区二区| 日本一不卡视频| 激情久久五月天| 色狠狠综合天天综合综合| 欧美性受xxxx黑人xyx性爽| 欧美日本一区二区在线观看| 91精品国模一区二区三区| 精品国产乱码久久| 一区二区三区在线观看欧美| 同产精品九九九| 精品一区二区在线看| 不卡影院免费观看| 国产精品一区二区在线看| 欧美视频一区二区三区四区 | 成人h动漫精品| 欧美网站一区二区| 欧美日韩大陆在线| 亚洲国产精品传媒在线观看| 亚洲免费大片在线观看| 视频一区国产视频| 国内外成人在线| 92国产精品观看| 精品久久一区二区三区| 亚洲乱码日产精品bd| 日本午夜一区二区| av毛片久久久久**hd| 精品少妇一区二区三区视频免付费| 中文字幕av免费专区久久| 亚洲一区av在线| 国产69精品一区二区亚洲孕妇| jlzzjlzz亚洲女人18| 26uuu久久综合| 一区二区欧美国产| 国产传媒日韩欧美成人| 欧美日韩高清在线播放| 1区2区3区欧美| 国产一区日韩二区欧美三区| 欧美少妇一区二区| 国产精品天天看| 天堂va蜜桃一区二区三区| 94-欧美-setu| 中文字幕精品一区| 免费国产亚洲视频| 在线观看视频91| 亚洲欧美日韩精品久久久久| 国产综合色产在线精品| 奇米一区二区三区| 国产精品国产三级国产普通话99| 亚洲五月六月丁香激情| 国产黄人亚洲片| 3d成人h动漫网站入口| 一区二区三区在线播放| 懂色av中文字幕一区二区三区 | 一区二区三区四区视频精品免费 | 国产成人av一区二区三区在线| 在线观看日韩国产| 亚洲日韩欧美一区二区在线| 国产91精品一区二区麻豆网站| 精品蜜桃在线看|