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

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

?? evc.c

?? nucleas source code
?? C
?? 第 1 頁 / 共 3 頁
字號:
        if (preempt)

            /* Transfer control to the system if the resumed task function
               detects a preemption condition.  */
            TCT_Control_To_System();
    }

    /* Release protection of the event_group.  */
    TCT_Unprotect();

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

    /* Return a successful status.  */
    return(NU_SUCCESS);
}



/*************************************************************************/
/*                                                                       */
/* FUNCTION                                                              */
/*                                                                       */
/*      EVC_Retrieve_Events                                              */
/*                                                                       */
/* DESCRIPTION                                                           */
/*                                                                       */
/*      This function retrieves various combinations of event flags from */
/*      the specified event group.  If the group does not contain the    */
/*      necessary flags, suspension of the calling task is possible.     */
/*                                                                       */
/* CALLED BY                                                             */
/*                                                                       */
/*      Application                                                      */
/*      EVCE_Retrieve_Events                Error checking shell         */
/*                                                                       */
/* CALLS                                                                 */
/*                                                                       */
/*      CSC_Place_On_List                   Place on suspend list        */
/*      [HIC_Make_History_Entry]            Make entry in history log    */
/*      TCC_Suspend_Task                    Suspend calling task         */
/*      [TCT_Check_Stack]                   Stack checking function      */
/*      TCT_Current_Thread                  Pickup current thread pointer*/
/*      TCT_System_Protect                  Protect event group          */
/*      TCT_Unprotect                       Release protection           */
/*                                                                       */
/* INPUTS                                                                */
/*                                                                       */
/*      event_group_ptr                     Event Group control block ptr*/
/*      requested_events                    Requested event flags        */
/*      operation                           AND/OR selection of flags    */
/*      retrieved_events                    Pointer to destination for   */
/*                                            actual flags retrieved     */
/*      suspend                             Suspension option            */
/*                                                                       */
/* OUTPUTS                                                               */
/*                                                                       */
/*      NU_SUCCESS                          If successful completion     */
/*      NU_TIMEOUT                          If timeout on suspension     */
/*      NU_NOT_PRESENT                      If event flags are not       */
/*                                            present                    */
/*                                                                       */
/* HISTORY                                                               */
/*                                                                       */
/*         DATE                    REMARKS                               */
/*                                                                       */
/*      03-01-1993      Created initial version 1.0                      */
/*      04-19-1993      Verified version 1.0                             */
/*      03-01-1994      Changed function interfaces to                   */
/*                      match those in prototype,                        */
/*                      added register options, changed                  */
/*                      protection logic to reduce                       */
/*                      overhead, resulting in                           */
/*                      version 1.1                                      */
/*                                                                       */
/*      03-18-1994      Verified version 1.1                             */
/*                                                                       */
/*************************************************************************/
STATUS  EVC_Retrieve_Events(NU_EVENT_GROUP *event_group_ptr,
                        UNSIGNED requested_events, OPTION operation,
                        UNSIGNED *retrieved_events, UNSIGNED suspend)
{

R1 EV_GCB      *event_group;                /* Event control block ptr   */
R2 EV_SUSPEND  *suspend_ptr;                /* Pointer to suspend block  */
EV_SUSPEND      suspend_block;              /* Suspension block          */
R3 UNSIGNED     compare;                    /* Event comparison variable */
TC_TCB         *task;                       /* Pointer to task           */
STATUS          status;                     /* Completion status         */
NU_SUPERV_USER_VARIABLES

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

    /* Move input event group pointer into internal pointer.  */
    event_group =  (EV_GCB *) event_group_ptr;


#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_RETRIEVE_EVENTS_ID, (UNSIGNED) event_group,
                            (UNSIGNED) requested_events, (UNSIGNED) operation);

#endif

    /* Initialize the status as successful.  */
    status =  NU_SUCCESS;

    /* Protect against simultaneous access to the event group.  */
    TCT_System_Protect();

    /* Determine if the events requested are present.  */

    /* Isolate common event flags.  */
    compare =  event_group -> ev_current_events & requested_events;

    /* Determine if all of the events must be present.  */
    if (operation & EV_AND)

        /* Yes, all events must be present.  See if the compare value is
           the same as the requested value.  */
        compare =  (compare == requested_events);

    /* Determine if the requested combination of event flags are present.  */
    if (compare)
    {

        /* Yes, necessary event flags are present.  */

        /* Copy the current event flags into the appropriate destination.  */
        *retrieved_events =  event_group -> ev_current_events;

        /* Determine if consumption is required.  If so, consume the event
           flags present in the group.  */
        if (operation & EV_CONSUME)

            event_group -> ev_current_events =
                event_group -> ev_current_events & ~requested_events;

#ifdef INCLUDE_PROVIEW
        _RTProf_DumpEventGroup(RT_PROF_RETRIEVE_EVENTS,event_group, RT_PROF_OK);
#endif /*INCLUDE_PROVIEW*/

    }
    else
    {

        /* Determine if the task requested suspension.  */
        if (suspend)
        {

            /* Suspension is selected.  */

            /* Increment the number of tasks waiting.  */
            event_group -> ev_tasks_waiting++;

#ifdef INCLUDE_PROVIEW
            _RTProf_DumpEventGroup(RT_PROF_RETRIEVE_EVENTS,event_group, RT_PROF_WAIT);
#endif /*INCLUDE_PROVIEW*/

            /* Setup the suspend block and suspend the calling task.  */
            suspend_ptr =  &suspend_block;
            suspend_ptr -> ev_event_group =              event_group;
            suspend_ptr -> ev_suspend_link.cs_next =     NU_NULL;
            suspend_ptr -> ev_suspend_link.cs_previous = NU_NULL;
            task =                            (TC_TCB *) TCT_Current_Thread();
            suspend_ptr -> ev_suspended_task =           task;
            suspend_ptr -> ev_requested_events =         requested_events;
            suspend_ptr -> ev_operation =                operation;

            /* Link the suspend block into the list of suspended tasks on this
               event group.  */
            CSC_Place_On_List((CS_NODE **)
                        &(event_group -> ev_suspension_list),
                                        &(suspend_ptr -> ev_suspend_link));

            /* Finally, suspend the calling task. Note that the suspension call
               automatically clears the protection on the event group.  */
            TCC_Suspend_Task((NU_TASK *) task, NU_EVENT_SUSPEND,
                                        EVC_Cleanup, suspend_ptr, suspend);

            /* Pickup the return status and the actual retrieved events.  */
            status =             suspend_ptr -> ev_return_status;
            *retrieved_events =  suspend_ptr -> ev_actual_events;
        }
        else
        {

            /* No suspension requested.  Simply return an error status
               and zero the retrieved events variable.  */
            status =             NU_NOT_PRESENT;
            *retrieved_events =  0;
#ifdef INCLUDE_PROVIEW
            _RTProf_DumpEventGroup(RT_PROF_RETRIEVE_EVENTS,event_group,RT_PROF_FAIL);
#endif /*INCLUDE_PROVIEW*/
        }
    }

    /* Release protection of the event_group.  */
    TCT_Unprotect();

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

    /* Return the completion status.  */
    return(status);
}


/*************************************************************************/
/*                                                                       */
/* FUNCTION                                                              */
/*                                                                       */
/*      EVC_Cleanup                                                      */
/*                                                                       */
/* DESCRIPTION                                                           */
/*                                                                       */
/*      This function is responsible for removing a suspension block     */
/*      from a event group.  It is not called unless a timeout or a task */
/*      terminate is in progress.  Note that protection is already in    */
/*      effect - the same protection at suspension time.  This routine   */
/*      must be called from Supervisor mode in Supervisor/User mode      */
/*      switching kernels.                                               */
/*                                                                       */
/* CALLED BY                                                             */
/*                                                                       */
/*      TCC_Timeout                         Task timeout                 */
/*      TCC_Terminate                       Task terminate               */
/*                                                                       */
/* CALLS                                                                 */
/*                                                                       */
/*      CSC_Remove_From_List                Remove suspend block from    */
/*                                            the suspension list        */
/*                                                                       */
/* INPUTS                                                                */
/*                                                                       */
/*      information                         Pointer to suspend block     */
/*                                                                       */
/* OUTPUTS                                                               */
/*                                                                       */
/*      None                                                             */
/*                                                                       */
/* HISTORY                                                               */
/*                                                                       */
/*         DATE                    REMARKS                               */
/*                                                                       */
/*      03-01-1993      Created initial version 1.0                      */
/*      04-19-1993      Verified version 1.0                             */
/*                                                                       */
/*************************************************************************/
VOID  EVC_Cleanup(VOID *information)
{

EV_SUSPEND      *suspend_ptr;               /* Suspension block pointer  */
NU_SUPERV_USER_VARIABLES

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

    /* Use the information pointer as a suspend pointer.  */
    suspend_ptr =  (EV_SUSPEND *) information;

    /* By default, indicate that the service timed-out.  It really does not
       matter if this function is called from a terminate request since
       the task does not resume.  */
    suspend_ptr -> ev_return_status =  NU_TIMEOUT;

    /* Decrement the number of tasks waiting counter.  */
    (suspend_ptr -> ev_event_group) -> ev_tasks_waiting--;

    /* Unlink the suspend block from the suspension list.  */
    CSC_Remove_From_List((CS_NODE **)
                &((suspend_ptr -> ev_event_group) -> ev_suspension_list),
                                &(suspend_ptr -> ev_suspend_link));

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







?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲在线视频免费观看| 91精品国产91久久久久久一区二区 | 日韩午夜激情电影| 欧美日韩国产高清一区二区三区| 色视频欧美一区二区三区| 91视频免费看| 欧美日韩亚洲丝袜制服| 欧美亚洲一区三区| 欧美日韩大陆一区二区| 91精品国产色综合久久久蜜香臀| 欧美日本一道本| 欧美日韩视频专区在线播放| 欧美放荡的少妇| 精品对白一区国产伦| 中文一区在线播放| 亚洲自拍偷拍欧美| 秋霞国产午夜精品免费视频| 国产精品资源在线看| 成人av在线资源| 欧美综合亚洲图片综合区| 欧美一区二区三区啪啪| 久久综合视频网| 亚洲欧美一区二区久久| 图片区小说区区亚洲影院| 精品中文字幕一区二区小辣椒| 国产98色在线|日韩| 色婷婷av一区| 精品国产伦一区二区三区观看方式 | 亚洲欧洲一区二区三区| 性欧美大战久久久久久久久| 久久av资源站| 欧美专区在线观看一区| 26uuu色噜噜精品一区二区| 亚洲欧洲日韩在线| 男女男精品视频| 色老头久久综合| 国产亚洲女人久久久久毛片| 亚洲综合色丁香婷婷六月图片| 另类中文字幕网| 欧美最新大片在线看| 日本一区二区三级电影在线观看 | 久久综合久色欧美综合狠狠| 亚洲精品精品亚洲| 国内久久精品视频| 欧美理论电影在线| 国产欧美一区二区精品久导航| 亚洲一区av在线| 懂色av噜噜一区二区三区av| 欧美日韩久久不卡| 久久亚洲一级片| 丝袜亚洲另类丝袜在线| 91亚洲精品乱码久久久久久蜜桃| 91精品国产aⅴ一区二区| 亚洲伊人色欲综合网| 国产精品性做久久久久久| 3d动漫精品啪啪| 亚洲成在人线免费| 欧美精品一二三| 亚洲欧美aⅴ...| 不卡高清视频专区| 久久久99久久| 精品亚洲免费视频| 日韩欧美综合一区| 亚洲成人免费在线观看| 色吧成人激情小说| 亚洲精品视频自拍| 波多野结衣在线一区| 久久女同精品一区二区| 老司机一区二区| 欧美成人aa大片| 蜜臀av性久久久久av蜜臀妖精| 日本精品一级二级| 亚洲一区视频在线| 99精品视频中文字幕| 国产精品卡一卡二| 国产精品一区二区男女羞羞无遮挡| 欧美一级日韩免费不卡| 午夜精品免费在线| 欧美男生操女生| 日韩国产精品91| 日韩欧美不卡在线观看视频| 亚洲1区2区3区视频| 欧美偷拍一区二区| 午夜国产不卡在线观看视频| 欧美三区在线观看| 五月婷婷久久丁香| 日韩欧美一级在线播放| 裸体在线国模精品偷拍| 欧美日韩二区三区| 首页综合国产亚洲丝袜| 日韩欧美国产一区二区三区| 久久精品国产久精国产| 亚洲精品在线观看网站| 国产成人8x视频一区二区| 日韩一区欧美小说| 欧美日韩国产电影| 国产做a爰片久久毛片| 国产婷婷一区二区| 成人黄色av电影| 亚洲国产视频直播| 日韩免费观看2025年上映的电影| 国内精品视频一区二区三区八戒| 亚洲国产精品激情在线观看| 欧美在线综合视频| 麻豆成人久久精品二区三区小说| 久久久天堂av| 欧美视频日韩视频在线观看| 久久精品国产77777蜜臀| 国产人成亚洲第一网站在线播放| 91亚洲精品久久久蜜桃网站 | 国产69精品久久777的优势| 亚洲免费在线观看视频| 日韩精品最新网址| av成人免费在线| 天天操天天综合网| 国产日本欧美一区二区| 欧美三区在线观看| 丁香婷婷深情五月亚洲| 亚洲高清三级视频| 欧美经典三级视频一区二区三区| 色屁屁一区二区| 国产一区二区三区四区在线观看| 亚洲人成7777| 26uuu国产日韩综合| 色视频一区二区| 国产黄色91视频| 奇米综合一区二区三区精品视频| 中文字幕亚洲精品在线观看 | 国产丶欧美丶日本不卡视频| 亚洲一区在线观看免费观看电影高清| 欧美电影精品一区二区| 欧美性生活久久| 色综合天天性综合| 无码av中文一区二区三区桃花岛| 久久久99精品免费观看不卡| 欧美二区三区的天堂| 色av成人天堂桃色av| 成人亚洲一区二区一| 久久成人av少妇免费| 亚洲成精国产精品女| 亚洲精品欧美综合四区| 国产精品久久久久影院亚瑟| 国产日产欧美一区| 久久久久9999亚洲精品| 精品国产91九色蝌蚪| 91精品久久久久久久91蜜桃| 欧美视频一区二区三区在线观看| 99久久久免费精品国产一区二区| 国产99久久精品| 丁香婷婷综合色啪| 成人丝袜高跟foot| 成年人国产精品| av激情成人网| 91国产精品成人| 欧美私人免费视频| 欧美色偷偷大香| 欧美妇女性影城| 欧美一区二区日韩| 精品免费视频一区二区| 日韩欧美高清一区| 精品少妇一区二区三区免费观看| 7777精品伊人久久久大香线蕉经典版下载| 欧美系列一区二区| 欧美丰满美乳xxx高潮www| 欧美乱熟臀69xxxxxx| 日韩视频在线一区二区| 亚洲精品一区二区精华| 国产欧美视频一区二区三区| 国产亚洲欧美色| 亚洲欧美日韩国产另类专区| 亚洲综合色丁香婷婷六月图片| 亚洲大片免费看| 精品一区二区三区蜜桃| 国产成人啪午夜精品网站男同| 成人伦理片在线| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 欧美视频日韩视频在线观看| 日韩午夜在线观看| 中文字幕成人av| 亚洲激情自拍视频| 日本不卡一区二区三区高清视频| 蜜桃视频一区二区三区在线观看| 国产老肥熟一区二区三区| 91在线视频免费91| 777午夜精品免费视频| 久久久久亚洲综合| 一级精品视频在线观看宜春院| 五月天亚洲婷婷| 国产激情一区二区三区| 欧美午夜影院一区| 久久一留热品黄| 亚洲高清久久久| 国产91精品一区二区麻豆网站| 91蜜桃在线免费视频| 日韩欧美国产一区二区在线播放 | 蜜桃视频在线观看一区二区| 成人av手机在线观看| 日韩视频一区在线观看| 日韩伦理av电影| 天天综合日日夜夜精品|