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

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

?? evc.c

?? nucleas source code
?? C
?? 第 1 頁 / 共 3 頁
字號:

    /* 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_DELETE_EVENT_GROUP_ID, (UNSIGNED) event_group,
                                        (UNSIGNED) 0, (UNSIGNED) 0);

#endif

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

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

    /* Clear the event group ID.  */
    event_group -> ev_id =  0;

    /* Release protection.  */
    TCT_Unprotect();

    /* Protect against access to the list of created event groups.  */
    TCT_Protect(&EVD_List_Protect);

    /* Remove the event_group from the list of created event groups.  */
    CSC_Remove_From_List(&EVD_Created_Event_Groups_List,
                                        &(event_group -> ev_created));

    /* Decrement the total number of created event groups.  */
    EVD_Total_Event_Groups--;

    /* Pickup the suspended task pointer list.  */
    suspend_ptr =  event_group -> ev_suspension_list;

    /* Walk the chain task(s) currently suspended on the event_group.  */
    preempt =  0;
    while (suspend_ptr)
    {

        /* Protect against system access.  */
        TCT_System_Protect();

        /* Resume the suspended task.  Insure that the status returned is
           NU_GROUP_DELETED.  */
        suspend_ptr -> ev_return_status =  NU_GROUP_DELETED;

        /* Point to the next suspend structure in the link.  */
        next_ptr =  (EV_SUSPEND *) (suspend_ptr -> ev_suspend_link.cs_next);

        /* Resume the specified task.  */
        preempt =  preempt |
            TCC_Resume_Task((NU_TASK *) suspend_ptr -> ev_suspended_task,
                                                NU_EVENT_SUSPEND);

        /* Determine if the next is the same as the current pointer.  */
        if (next_ptr == event_group -> ev_suspension_list)

            /* Clear the suspension pointer to signal the end of the list
               traversal.  */
            suspend_ptr =  NU_NULL;
        else

            /* Move the next pointer into the suspend block pointer.  */
            suspend_ptr =  next_ptr;

        /* Modify current protection.  */
        TCT_Set_Current_Protect(&EVD_List_Protect);

        /* Clear the system protection.  */
        TCT_System_Unprotect();
    }

    /* Determine if preemption needs to occur.  */
    if (preempt)

        /* Transfer control to system to facilitate preemption.  */
        TCT_Control_To_System();

    /* Release protection against access to the list of created
       event groups. */
    TCT_Unprotect();

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

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


/*************************************************************************/
/*                                                                       */
/* FUNCTION                                                              */
/*                                                                       */
/*      EVC_Set_Events                                                   */
/*                                                                       */
/* DESCRIPTION                                                           */
/*                                                                       */
/*      This function sets event flags within the specified event flag   */
/*      group.  Event flags may be ANDed or ORed against the current     */
/*      events of the group.  Any task that is suspended on the group    */
/*      that has its request satisfied is resumed.                       */
/*                                                                       */
/* CALLED BY                                                             */
/*                                                                       */
/*      Application                                                      */
/*      EVCE_Set_Events                     Error checking shell         */
/*                                                                       */
/* CALLS                                                                 */
/*                                                                       */
/*      CSC_Remove_From_List                Remove from suspend list     */
/*      [HIC_Make_History_Entry]            Make entry in history log    */
/*      TCC_Resume_Task                     Resume a suspended task      */
/*      [TCT_Check_Stack]                   Stack checking function      */
/*      TCT_Control_To_System               Transfer control to system   */
/*      TCT_System_Protect                  Protect event group          */
/*      TCT_Unprotect                       Release protection           */
/*                                                                       */
/* INPUTS                                                                */
/*                                                                       */
/*      event_group_ptr                     Event Group control block ptr*/
/*      events                              Event flag setting           */
/*      operation                           Operation to perform on the  */
/*                                            event flag group (AND/OR)  */
/*                                                                       */
/* OUTPUTS                                                               */
/*                                                                       */
/*      NU_SUCCESS                          If service is successful     */
/*                                                                       */
/* 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                             */
/*      11-19-1996      Corrected SPR190.                                */
/*                                                                       */
/*************************************************************************/
STATUS  EVC_Set_Events(NU_EVENT_GROUP *event_group_ptr, UNSIGNED events,
                                                OPTION operation)
{

R1 EV_GCB      *event_group;                /* Event control block ptr   */
R2 EV_SUSPEND  *suspend_ptr;                /* Pointer to suspension blk */
R3 EV_SUSPEND  *next_ptr;                   /* Pointer to next suspend   */
R4 EV_SUSPEND  *last_ptr;                   /* Last suspension block ptr */
UNSIGNED        consume;                    /* Event flags to consume    */
UNSIGNED        compare;                    /* Event comparison variable */
INT             preempt;                    /* Preemption required flag  */
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_SET_EVENTS_ID, (UNSIGNED) event_group,
                                      (UNSIGNED) events, (UNSIGNED) operation);

#endif

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

    /* Perform the specified operation on the current event flags in the
       group.  */
    if (operation & EV_AND)

        /* AND the specified events with the current events.  */
        event_group -> ev_current_events =
                        event_group -> ev_current_events & events;
    else

        /* OR the specified events with the current events.  */
        event_group -> ev_current_events =
                        event_group -> ev_current_events | events;

#ifdef INCLUDE_PROVIEW
    _RTProf_DumpEventGroup(RT_PROF_SET_EVENTS,event_group , RT_PROF_OK);
#endif /*INCLUDE_PROVIEW*/
    /* Determine if there are any tasks suspended for events from this
       event flag group.  */
    if (event_group -> ev_suspension_list)
    {

        /* Initialize the consumption bits to 0.  */
        consume =  0;

        /* Now, walk the chain of tasks suspended on this event flag group to
           determine if any of their requests can be satisfied.  */
        suspend_ptr =  event_group -> ev_suspension_list;

        /* Setup a pointer to the last suspension block.  */
        last_ptr =  (EV_SUSPEND *) suspend_ptr -> ev_suspend_link.cs_previous;

        /* Clear the preempt flag.  */
        preempt =  0;
        do
        {

            /* Determine if this request has been satisfied.  */

            /* First, find the event flags in common.  */
            compare =  event_group -> ev_current_events &
                                        suspend_ptr -> ev_requested_events;

            /* Second, determine if all the event flags must match.  */
            if (suspend_ptr -> ev_operation & EV_AND)

                /* Yes, an AND condition is present.  All requested events
                   must be present.  */
                compare =  (compare == suspend_ptr -> ev_requested_events);

            /* Setup the next pointer.  Note that this must be done before
               the suspended task is resumed, since its suspend block could
               get corrupted.  */
            next_ptr =  (EV_SUSPEND *) suspend_ptr -> ev_suspend_link.cs_next;

            /* If compare is non-zero, the suspended task's event request is
               satisfied.  */
            if (compare)
            {

                /* Decrement the number of tasks waiting counter.  */
                event_group -> ev_tasks_waiting--;

                /* Determine if consumption is requested.  */
                if (suspend_ptr -> ev_operation & EV_CONSUME)

                    /* Keep track of the event flags to consume.  */
                    consume =  consume | suspend_ptr -> ev_requested_events;

                /* Remove the first suspended block from the list.  */
                CSC_Remove_From_List((CS_NODE **)
                        &(event_group -> ev_suspension_list),
                                &(suspend_ptr -> ev_suspend_link));

                /* Setup the appropriate return value.  */
                suspend_ptr -> ev_return_status =  NU_SUCCESS;
                suspend_ptr -> ev_actual_events =
                                        event_group -> ev_current_events;

                /* Resume the suspended task.  */
                preempt = preempt |
                 TCC_Resume_Task((NU_TASK *) suspend_ptr -> ev_suspended_task,
                                                       NU_EVENT_SUSPEND);

            }

            /* Determine if there is another suspension block to examine.  */
            if (suspend_ptr != last_ptr)

                /* More to examine in the suspension list.  Look at the
                   next suspend block.  */
                suspend_ptr =  next_ptr;
            else

                /* End of the list has been reached.  Set the suspend pointer
                   to NULL to end the search.  */
                suspend_ptr =  NU_NULL;

        } while (suspend_ptr);

        /* Apply all of the gathered consumption bits.  */
        event_group -> ev_current_events =
           event_group -> ev_current_events & ~consume;

        /* Determine if a preempt condition is present.  */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频一区二区在线观看| 亚洲黄色尤物视频| 91丨九色丨蝌蚪丨老版| 免费在线看一区| 《视频一区视频二区| 欧美一区二区三区人| av电影在线不卡| 国产原创一区二区三区| 亚洲一二三四在线观看| 中文字幕av一区二区三区免费看| 亚洲成在人线在线播放| 国产欧美日韩久久| 日韩欧美你懂的| 欧美午夜精品理论片a级按摩| 国产精品一区二区久久精品爱涩| 午夜成人在线视频| 一区二区成人在线观看| 国产精品久久二区二区| 久久一日本道色综合| 在线播放亚洲一区| 欧美视频日韩视频| 在线观看视频一区二区欧美日韩| 国产不卡一区视频| 国产一区不卡在线| 极品瑜伽女神91| 青青草国产精品亚洲专区无| 亚洲午夜成aⅴ人片| 亚洲日本韩国一区| 亚洲视频在线一区观看| 中文在线资源观看网站视频免费不卡| 日韩精品在线一区二区| 91精品国产91久久综合桃花| 欧美日韩亚洲综合| 91传媒视频在线播放| 99麻豆久久久国产精品免费优播| 国产成人在线色| 国产69精品久久777的优势| 极品少妇一区二区三区精品视频 | 国产剧情一区在线| 另类人妖一区二区av| 日本成人中文字幕在线视频 | 日av在线不卡| 秋霞电影网一区二区| 婷婷中文字幕一区三区| 亚洲国产精品一区二区久久 | 国产成人自拍网| 国产成人午夜电影网| 丁香激情综合国产| caoporn国产精品| 一本大道av伊人久久综合| 91丨九色丨黑人外教| 色中色一区二区| 欧美三级日韩在线| 欧美裸体bbwbbwbbw| 欧美一区二区三区四区高清| 欧美一级一区二区| 精品国产免费人成电影在线观看四季 | 欧美剧在线免费观看网站| 欧美日韩亚洲丝袜制服| 欧美成人一区二区三区片免费| 精品久久久久av影院| 国产亚洲综合在线| 亚洲人亚洲人成电影网站色| 亚洲精品国产无天堂网2021 | jvid福利写真一区二区三区| 91丨porny丨中文| 在线不卡中文字幕播放| 精品国产凹凸成av人网站| 国产精品视频一区二区三区不卡| 亚洲天堂av一区| 亚洲午夜在线观看视频在线| 日韩av不卡一区二区| 麻豆精品一区二区av白丝在线| 国产自产高清不卡| 99久久精品国产网站| 欧美男同性恋视频网站| 日韩精品一区二区三区视频在线观看| 久久精品一区蜜桃臀影院| 亚洲丝袜精品丝袜在线| 蜜臀av一区二区| 99热精品一区二区| 91精品国产全国免费观看| 国产丝袜美腿一区二区三区| 亚洲精品成人悠悠色影视| 日产精品久久久久久久性色| 国产成人在线视频免费播放| 色婷婷综合五月| 欧美大片顶级少妇| 亚洲精品视频免费观看| 蜜臀久久99精品久久久画质超高清 | 97久久超碰国产精品| 欧美猛男男办公室激情| 国产色产综合产在线视频| 亚洲一区二区三区中文字幕在线| 看国产成人h片视频| 91欧美激情一区二区三区成人| 欧美一区永久视频免费观看| 亚洲欧洲一区二区在线播放| 美女mm1313爽爽久久久蜜臀| 色婷婷av一区二区三区软件| 2021中文字幕一区亚洲| 亚洲国产精品自拍| 99久久精品国产一区二区三区| 日韩欧美一区二区免费| 亚洲精品乱码久久久久久久久 | 亚洲精品国产视频| 岛国一区二区三区| 精品久久一区二区| 亚洲成人av免费| 99re视频精品| 欧美国产综合一区二区| 麻豆精品精品国产自在97香蕉| 色国产精品一区在线观看| 久久久精品国产99久久精品芒果| 五月天激情综合网| 91福利在线观看| 最新中文字幕一区二区三区 | 欧美群妇大交群的观看方式| 亚洲天堂网中文字| bt7086福利一区国产| 国产欧美一区二区在线观看| 麻豆国产一区二区| 制服丝袜在线91| 日韩主播视频在线| 欧美肥妇free| 日韩国产欧美在线视频| 欧美日韩夫妻久久| 亚洲一区二区三区中文字幕| 91一区一区三区| 中文字幕一区二区三区在线不卡 | 国内不卡的二区三区中文字幕| 欧美日韩激情一区二区三区| 亚洲日本护士毛茸茸| 波多野结衣在线aⅴ中文字幕不卡| 欧美精品一区二区三区蜜桃视频 | 中文字幕一区二区三区四区不卡 | 日韩欧美成人午夜| 日韩va亚洲va欧美va久久| 56国语精品自产拍在线观看| 亚洲综合色噜噜狠狠| 91麻豆精东视频| 中文字幕亚洲综合久久菠萝蜜| 国产一区二区三区国产| 精品理论电影在线观看| 国产综合久久久久影院| 精品国产乱码久久久久久牛牛| 日韩精品电影一区亚洲| 91精品一区二区三区在线观看| 午夜精品久久久久久久久久| 欧美日韩激情一区二区| 蜜臀av一区二区在线免费观看| 日韩欧美精品在线视频| 久久精品国产成人一区二区三区| 日韩美女主播在线视频一区二区三区| 麻豆91免费看| 国产日韩亚洲欧美综合| 99re66热这里只有精品3直播| 亚洲综合色自拍一区| 在线免费观看成人短视频| 亚洲人成网站在线| 91精品国产一区二区三区蜜臀| 国内精品伊人久久久久av一坑| 久久嫩草精品久久久久| 成人黄色电影在线| 一区二区三区精品在线| 91精品国产欧美一区二区18| 欧美96一区二区免费视频| 欧美成人猛片aaaaaaa| 国产凹凸在线观看一区二区| 国产精品麻豆一区二区| 在线观看国产一区二区| 免费不卡在线视频| 国产女同互慰高潮91漫画| 色综合久久中文综合久久牛| 亚洲五码中文字幕| 欧美成人一区二区三区片免费 | 欧美日韩专区在线| 另类的小说在线视频另类成人小视频在线| 九一九一国产精品| 国产精品美女一区二区三区 | 久久久久久久久久久久电影| 97se亚洲国产综合自在线不卡| 香港成人在线视频| 国产欧美日韩在线观看| 欧美精品tushy高清| 成人午夜视频在线观看| 丝袜美腿亚洲一区| 国产精品国产三级国产aⅴ中文| 欧美日韩五月天| 成人免费视频app| 日韩电影一区二区三区| 国产精品久久久久久久久晋中| 欧美日韩精品一区二区| 国产91在线观看| 热久久免费视频| 中文字幕日韩av资源站| 精品国产成人在线影院| 欧美特级限制片免费在线观看| 国产成人精品亚洲日本在线桃色| 亚洲成人一区二区|