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

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

?? tcs.c

?? nucleas source code
?? C
?? 第 1 頁 / 共 4 頁
字號:
               /* Note that the priority bit map does not need to be
                  modified since there are other active tasks at the
                  same priority.  */
           }
           else
           {

               /* Add the TCB to an empty list.  */
               task -> tc_ready_previous =  task;
               task -> tc_ready_next =      task;
               *(task -> tc_priority_head)= task;

               /* Update the priority group bit map to indicate that this
                  priority now has a task ready.  */
               TCD_Priority_Groups =
                           TCD_Priority_Groups | (task -> tc_priority_group);

               /* Update the sub-priority bit map to show that this priority
                  is ready.  */
               *(task -> tc_sub_priority_ptr) =
                   (*(task -> tc_sub_priority_ptr)) | task -> tc_sub_priority;
           }

           /* Determine the highest priority task in the system.  */
           if (TCD_Priority_Groups & TC_HIGHEST_MASK)

               /* Base of sub-group is 0.  */
               index =  0;

           else if (TCD_Priority_Groups & TC_NEXT_HIGHEST_MASK)

               /* Base of sub-group is 8.  */
               index =  8;

           else if (TCD_Priority_Groups & TC_NEXT_LOWEST_MASK)

               /* Base of sub-group is 16.  */
               index =  16;
           else

               /* Base of sub-group is 24.  */
               index =  24;

           /* Calculate the highest available priority.  */
           index =  index + TCD_Lowest_Set_Bit[(INT)
                   ((TCD_Priority_Groups >> index) & TC_HIGHEST_MASK)];

           /* Get the mask of the priority within the group of 8 priorities.  */
           temp =  TCD_Sub_Priority_Groups[index];

           /* Calculate the actual priority.  */
           TCD_Highest_Priority =  (index << 3) + TCD_Lowest_Set_Bit[temp];

           /* Check for preemption.  */
           if ((TCD_Highest_Priority <= ((INT) TCD_Execute_Task -> tc_priority))
               && (TCD_Execute_Task -> tc_preemption))
           {

               /* Update the current task pointer.  */
               TCT_Set_Execute_Task(TCD_Priority_List[TCD_Highest_Priority]);

               /* Now, check and see if the current thread is a task.
                  If so, return a status that indicates a context
                  switch is needed.  */
               if ((TCD_Current_Thread) &&
                  (((TC_TCB *) TCD_Current_Thread) -> tc_id == TC_TASK_ID))

                   /* Transfer control to the system.  */
                   TCT_Control_To_System();
           }
       }
       else
       {

           /* Just modify the priority.  */
           task -> tc_priority =  new_priority;

           /* Build the other priority information.  */
           task -> tc_priority =      new_priority;
           task -> tc_priority_head = &(TCD_Priority_List[new_priority]);
           task -> tc_sub_priority =  (DATA_ELEMENT) (1 << (new_priority & 7));
           task -> tc_priority_group =   ((UNSIGNED) 1) << (new_priority >> 3);
           task -> tc_sub_priority_ptr =
                   &(TCD_Sub_Priority_Groups[(new_priority >> 3)]);
       }
#ifdef INCLUDE_PROVIEW
        _RTProf_DumpTask(task,RT_PROF_CHANGE_PRIORITY);
#endif
    }

    /* Release the protection of the scheduling list.  */
    TCT_Unprotect();

    /* Return to user mode */
    NU_USER_MODE();

    /* Return the old priority.  */
    return(old_priority);
}


/*************************************************************************/
/*                                                                       */
/* FUNCTION                                                              */
/*                                                                       */
/*      TCS_Change_Preemption                                            */
/*                                                                       */
/* DESCRIPTION                                                           */
/*                                                                       */
/*      This function changes the preemption posture of the calling      */
/*      task.  Preemption for a task may be enabled or disabled.  If     */
/*      it is disabled, the task runs until it suspends or relinquishes. */
/*      If a preemption is pending, a call to this function to enable    */
/*      preemption causes a context switch.                              */
/*                                                                       */
/* CALLED BY                                                             */
/*                                                                       */
/*      Application                                                      */
/*      TCSE_Change_Preemption              Error checking function      */
/*                                                                       */
/* CALLS                                                                 */
/*                                                                       */
/*      [HIC_Make_History_Entry]            Make entry in history log    */
/*      [TCT_Check_Stack]                   Stack checking function      */
/*      TCT_Control_To_System               Transfer control to system   */
/*      TCT_Protect                         Protect scheduling info      */
/*      TCT_Set_Execute_Task                Set TCD_Execute_Task pointer */
/*      TCT_Unprotect                       Release protection of info   */
/*                                                                       */
/* INPUTS                                                                */
/*                                                                       */
/*      preempt                             Preempt selection parameter  */
/*                                                                       */
/* OUTPUTS                                                               */
/*                                                                       */
/*      old_preempt                         Original preempt value       */
/*                                                                       */
/* HISTORY                                                               */
/*                                                                       */
/*        DATE                    REMARKS                                */
/*                                                                       */
/*      03-01-1993      Created initial version 1.0                      */
/*      04-19-1993      Verified version 1.0                             */
/*      03-01-1994      Modified protection logic,                       */
/*                      resulting in version 1.1                         */
/*                                                                       */
/*      03-18-1994      Verified version 1.1                             */
/*                                                                       */
/*************************************************************************/
OPTION   TCS_Change_Preemption(OPTION preempt)
{

TC_TCB         *task;                       /* Pointer to task           */
OPTION          old_preempt;
NU_SUPERV_USER_VARIABLES

    /* Switch to supervisor mode */
    NU_SUPERVISOR_MODE();

#ifdef  NU_ENABLE_STACK_CHECK

    /* Call stack checking function to check for an overflow condition.  */
    TCT_Check_Stack();

#endif

#ifdef  NU_ENABLE_HISTORY

    /* Make an entry that corresponds to this function in the system history
       log.  */
    HIC_Make_History_Entry(NU_CHANGE_PREEMPTION_ID, (UNSIGNED) preempt,
                                        (UNSIGNED) 0, (UNSIGNED) 0);

#endif

    /* Protect the scheduling information.  */
    TCT_Protect(&TCD_System_Protect);

    /* Pickup the current thread and place it in the task pointer.  */
    task =  (TC_TCB *) TCD_Current_Thread;

    /* Save the old preempt value.  */
    if (task -> tc_preemption)

        /* Previously enabled.  */
        old_preempt =  NU_PREEMPT;
    else

        /* Previously disabled.  */
        old_preempt =  NU_NO_PREEMPT;

    /* Process the new value.  */
    if (preempt == NU_NO_PREEMPT)

        /* Disable preemption.  */
        TCD_Execute_Task -> tc_preemption =  NU_FALSE;
    else
    {

        /* Enable preemption.  */
        task -> tc_preemption =  NU_TRUE;

        /* Check for a preemption condition.  */
        if ((task == TCD_Execute_Task) &&
            (TCD_Highest_Priority < ((INT) TCD_Execute_Task -> tc_priority)))
        {

            /* Preempt the current task.  */
            TCT_Set_Execute_Task(TCD_Priority_List[TCD_Highest_Priority]);

            /* Transfer control to the system.  */
            TCT_Control_To_System();
        }
    }

#ifdef INCLUDE_PROVIEW
    _RTProf_DumpTask(task,RT_PROF_CHANGE_PREEMPTION);
#endif

    /* Release protection of information.  */
    TCT_Unprotect();

    /* Return to user mode */
    NU_USER_MODE();

    /* Return the previous preemption posture.  */
    return(old_preempt);
}


/*************************************************************************/
/*                                                                       */
/* FUNCTION                                                              */
/*                                                                       */
/*      TCS_Change_Time_Slice                                            */
/*                                                                       */
/* DESCRIPTION                                                           */
/*                                                                       */
/*      This function changes the time slice of the specified task.  A   */
/*      time slice value of 0 disables time slicing.                     */
/*                                                                       */
/* CALLED BY                                                             */
/*                                                                       */
/*      Application                                                      */
/*      TCES_Change_Preemption              Error checking function      */
/*                                                                       */
/* CALLS                                                                 */
/*                                                                       */
/*      [HIC_Make_History_Entry]            Make entry in history log    */
/*      [TCT_Check_Stack]                   Stack checking function      */
/*      TCT_Protect                         Protect scheduling info      */
/*      TCT_Unprotect                       Release protection of info   */
/*                                                                       */
/* INPUTS                                                                */
/*                                                                       */
/*      task_ptr                            Task control block pointer   */
/*      time_slice                          New time slice value         */
/*                                                                       */
/* OUTPUTS                                                               */
/*                                                                       */
/*      old_time_slice                      Original time slice value    */
/*                                                                       */
/* HISTORY                                                               */
/*                                                                       */
/*         DATE                    REMARKS                               */
/*                                                                       */
/*      03-01-1993      Created initial version 1.0                      */
/*      04-19-1993      Verified version 1.0                             */
/*      03-01-1994      Modified function interface,                     */
/*                      added register optimizations,                    */
/*                      modified protection logic,                       */
/*                      resulting in version 1.1                         */
/*                                                                       */
/*      03-18-1994      Verified version 1.1                             */
/*                                                                       */
/*************************************************************************/
UNSIGNED   TCS_Change_Time_Slice(NU_TASK *task_ptr, UNSIGNED time_slice)
{

TC_TCB         *task;                       /* Task control block ptr    */
UNSIGNED        old_time_slice;             /* Old time slice value      */
NU_SUPERV_USER_VARIABLES

    /* Switch to supervisor mode */
    NU_SUPERVISOR_MODE();

    /* Move input task control block pointer into internal pointer.  */
    task =  (TC_TCB *) task_ptr;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人aaaa| 日本韩国一区二区| 亚洲女同ⅹxx女同tv| 欧美人牲a欧美精品| 懂色av中文一区二区三区| 天天综合天天综合色| 欧美激情一区三区| 91精品欧美综合在线观看最新 | 大白屁股一区二区视频| 日韩精品成人一区二区在线| 国产精品嫩草99a| 久久久久久久综合| 日韩一区二区视频在线观看| 欧美色大人视频| 色88888久久久久久影院野外| 高清shemale亚洲人妖| 精品一区中文字幕| 免费xxxx性欧美18vr| 亚洲午夜免费视频| 亚洲一区二区三区四区在线免费观看 | 精品亚洲porn| 首页亚洲欧美制服丝腿| 亚洲h动漫在线| 亚洲图片欧美色图| 一区二区三区在线视频播放| 国产精品乱码久久久久久| 久久久久久黄色| 久久美女高清视频| 2017欧美狠狠色| xfplay精品久久| 欧美精品一区二区蜜臀亚洲| 精品人伦一区二区色婷婷| 日韩精品一区二区三区老鸭窝| 日韩一区二区精品葵司在线| 欧美日韩激情在线| 制服丝袜激情欧洲亚洲| 欧美精品日韩综合在线| 91精品欧美综合在线观看最新| 678五月天丁香亚洲综合网| 欧美日韩一级片网站| 欧美日韩卡一卡二| 91精品国产色综合久久不卡蜜臀 | 国产精品18久久久久| 国产精品一区二区三区99| 国产乱色国产精品免费视频| 国产精品一区三区| 成人性色生活片| 91丨porny丨在线| 欧美在线观看视频一区二区| 欧美丝袜丝交足nylons| 欧美精品 国产精品| 欧美一区二区大片| 久久精品一区蜜桃臀影院| 欧美国产日韩一二三区| 亚洲视频一二区| 五月天中文字幕一区二区| 久久99精品久久久久久久久久久久| 久久99精品网久久| 99久久精品费精品国产一区二区| 91黄色激情网站| 日韩欧美一级二级三级| 国产亚洲精品久| 亚洲免费av高清| 欧美aⅴ一区二区三区视频| 国模套图日韩精品一区二区| eeuss鲁片一区二区三区 | 色婷婷综合久久久久中文 | 免费观看在线综合色| 国产精品1区二区.| 在线亚洲欧美专区二区| 日韩一区二区不卡| 国产精品美女久久久久久久久久久| 亚洲人成在线播放网站岛国 | 日精品一区二区| 狠狠色狠狠色综合日日91app| av色综合久久天堂av综合| 欧美色精品在线视频| 精品国一区二区三区| 最好看的中文字幕久久| 日本视频中文字幕一区二区三区| 国产精品综合在线视频| 91福利精品第一导航| 精品处破学生在线二十三| 国产精品夫妻自拍| 久久精品国产99国产| 99久久精品国产导航| 精品少妇一区二区三区视频免付费 | 91视视频在线观看入口直接观看www | 日本中文在线一区| 成人丝袜高跟foot| 日韩三级免费观看| 亚洲视频在线观看一区| 蜜臀久久久99精品久久久久久| av电影在线不卡| 精品国产一区二区在线观看| 亚洲欧美日韩久久| 国产精品一区三区| 51午夜精品国产| 亚洲丝袜精品丝袜在线| 国产精选一区二区三区| 91精品久久久久久蜜臀| 亚洲精品国产视频| 国产精品888| 欧美tickle裸体挠脚心vk| 亚洲国产欧美一区二区三区丁香婷| 福利一区二区在线| 欧美xxxxx牲另类人与| 亚洲成人福利片| 一本到不卡精品视频在线观看| 久久精品视频一区二区三区| 亚洲电影视频在线| 在线观看亚洲精品视频| 中文字幕日本不卡| 国产成人无遮挡在线视频| 欧美xxxxx牲另类人与| 视频在线观看国产精品| 91福利在线播放| 亚洲激情图片一区| 91麻豆成人久久精品二区三区| 国产精品三级视频| 国产福利一区在线| 久久久久久一二三区| 久久99精品久久久久久动态图| 欧美精品少妇一区二区三区| 亚洲一区二区三区三| 91亚洲永久精品| 亚洲欧美另类小说| 色哟哟在线观看一区二区三区| 亚洲同性gay激情无套| 91色视频在线| 亚洲精品中文在线影院| 日本韩国视频一区二区| 夜夜嗨av一区二区三区| 欧洲一区二区三区免费视频| 一区二区三区在线视频观看58 | 色婷婷亚洲婷婷| 亚洲欧美激情一区二区| 91在线视频18| 亚洲精品视频在线观看网站| 欧美影视一区在线| 日韩综合小视频| 精品女同一区二区| 国产成人8x视频一区二区 | 乱一区二区av| 2021久久国产精品不只是精品| 国产一区不卡在线| 国产色婷婷亚洲99精品小说| 成人免费高清在线观看| 一区二区高清免费观看影视大全| 欧美在线观看禁18| 蜜臀91精品一区二区三区| 精品国产污污免费网站入口 | 国内一区二区视频| 中文字幕不卡三区| 日本精品一区二区三区高清| 日韩在线a电影| 国产视频一区二区在线| 一本大道久久a久久精品综合| 亚洲最大色网站| 日韩一区二区在线看| 国产馆精品极品| 亚洲在线视频免费观看| 欧美一卡二卡在线| 成人美女视频在线看| 亚洲成人一二三| wwww国产精品欧美| 在线日韩一区二区| 久久不见久久见免费视频7 | 精品制服美女丁香| 国产精品高潮久久久久无| 欧美日韩三级视频| 经典三级在线一区| 亚洲色图一区二区三区| 日韩欧美一级二级三级久久久| 成人小视频免费在线观看| 亚洲超碰精品一区二区| 久久久久久久久久久久久夜| 一本到不卡精品视频在线观看| 毛片av一区二区| 亚洲男人的天堂网| xf在线a精品一区二区视频网站| 色婷婷国产精品综合在线观看| 美国毛片一区二区三区| 亚洲精品老司机| 久久婷婷国产综合精品青草| 欧美午夜理伦三级在线观看| 国产成人在线视频免费播放| 日韩影院在线观看| 亚洲色图视频网| 国产亚洲自拍一区| 日韩视频中午一区| 在线日韩国产精品| 懂色中文一区二区在线播放| 日本中文字幕一区二区视频 | 欧美无砖砖区免费| 波多野结衣在线一区| 精品一区免费av| 亚洲第一在线综合网站| 1024成人网色www| 久久免费看少妇高潮|