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

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

?? os_q.c

?? S3C2410A的UCOS內核,可以供ARM初學初學者使用
?? C
?? 第 1 頁 / 共 3 頁
字號:
    }
}
#endif

/*$PAGE*/
/*
*********************************************************************************************************
*                                           清空消息隊列
*
* 函數描述 : 該函數用于清空消息隊列中的內容
*
* 輸入參數   : 無
*
* 返回值     : OS_NO_ERR           調用成功
*              OS_ERR_EVENT_TYPE   從一個非消息隊列中獲取信息
*              OS_ERR_PEVENT_NULL  'pevent' 是一個空指針
*********************************************************************************************************
*/

#if OS_Q_FLUSH_EN > 0
INT8U  OSQFlush (OS_EVENT *pevent)
{
#if OS_CRITICAL_METHOD == 3                           /* 為CPU狀態寄存器分配存儲變量     */
    OS_CPU_SR  cpu_sr;
#endif
    OS_Q      *pq;


#if OS_ARG_CHK_EN > 0
    if (pevent == (OS_EVENT *)0) 
    {                                                  /* 無效的 'pevent'                            */
        return (OS_ERR_PEVENT_NULL);
    }
    if (pevent->OSEventType != OS_EVENT_TYPE_Q) 
    {                                              /* 無效的事件塊類型                        */
        return (OS_ERR_EVENT_TYPE);
    }
#endif
    OS_ENTER_CRITICAL();
    pq             = (OS_Q *)pevent->OSEventPtr;      /* 指向隊列的存儲結構              */
    pq->OSQIn      = pq->OSQStart;
    pq->OSQOut     = pq->OSQStart;
    pq->OSQEntries = 0;
    OS_EXIT_CRITICAL();
    return (OS_NO_ERR);
}
#endif

/*$PAGE*/
/*
*********************************************************************************************************
*                                     等待隊列中的消息
*
* 函數描述:   該函數等待發送到隊列中的消息
*
* 輸入參數  : pevent        指向帶有期望隊列的ECB的指針
*
*             timeout       選擇延時時間。如果非0,則任務將在指定的延時時間內等待到達隊列中的消息。如果為0,
*                           則任務將一直等待隊列中消息的到來。
*             err           指向出錯代碼的指針。其值為:
*
*                           OS_NO_ERR           調用成功,任務收到消息
*                           OS_TIMEOUT          在指定的延時時間內,沒有收到消息
*                           OS_ERR_EVENT_TYPE   無效的事件類型
*                           OS_ERR_PEVENT_NULL  'pevent' 是一個空指針
*                           OS_ERR_PEND_ISR     從ISR中調用該函數,將導致掛起
*
* Returns : != (void *)0   指向接收到消息的指針
*           == (void *)0   沒有消息接收,,
*                            'pevent' 是一個空指針,
*                            沒有傳遞給隊列一個恰當的指針.
*********************************************************************************************************
*/

void  *OSQPend (OS_EVENT *pevent, INT16U timeout, INT8U *err)
{
#if OS_CRITICAL_METHOD == 3                      /* 為CPU狀態寄存器分配存儲變量         */
    OS_CPU_SR  cpu_sr;
#endif
    void      *msg;
    OS_Q      *pq;


    if (OSIntNesting > 0)
     {                                                      /* 如果調用來自 ISR ... ...     */
        *err = OS_ERR_PEND_ISR;                  /* ... 從ISR中不能掛起            */
        return ((void *)0);
    }
#if OS_ARG_CHK_EN > 0
    if (pevent == (OS_EVENT *)0) 
    {                                                                    /* 無效的 'pevent'            */
        *err = OS_ERR_PEVENT_NULL;
        return ((void *)0);
    }
    if (pevent->OSEventType != OS_EVENT_TYPE_Q)
     {                                                      /* 無效的事件塊類型     */
        *err = OS_ERR_EVENT_TYPE;
        return ((void *)0);
    }
#endif
    OS_ENTER_CRITICAL();
    pq = (OS_Q *)pevent->OSEventPtr;             /* 指向QCB                       */
    if (pq->OSQEntries > 0)                      /* 看隊列中是否有消息?       */
    {                                           
        msg = *pq->OSQOut++;                     /* 是,提取最先進入的消息        */
        pq->OSQEntries--;                        /* 更新隊列中的消息數          */
        if (pq->OSQOut == pq->OSQEnd) 
        {                                      /* 進行邊界檢查 */
            pq->OSQOut = pq->OSQStart;
        }
        OS_EXIT_CRITICAL();
        *err = OS_NO_ERR;
        return (msg);                            /* 返回接收到的消息                           */
    }
    OSTCBCur->OSTCBStat |= OS_STAT_Q;            /* 消息無效,任務將等待  */
    OSTCBCur->OSTCBDly   = timeout;              /* 在TCB中加載延時數                             */
    OS_EventTaskWait(pevent);                    /* 掛起任務直到事件發生或延時到         */
    OS_EXIT_CRITICAL();
    OS_Sched();                                  /* 尋找最高優先級任務就緒運行       */
    OS_ENTER_CRITICAL();
    msg = OSTCBCur->OSTCBMsg;
    if (msg != (void *)0) 
    {                                            /* 看是否有消息?                              */
        OSTCBCur->OSTCBMsg      = (void *)0;     /* 有,清除已接收的消息      */
        OSTCBCur->OSTCBStat     = OS_STAT_RDY;
        OSTCBCur->OSTCBEventPtr = (OS_EVENT *)0; /* 不在等待事件 拆除TCB與ECB的鏈接                  */
        OS_EXIT_CRITICAL();
        *err                    = OS_NO_ERR;
        return (msg);                            /* 返回接收的消息                           */
    }
    OS_EventTO(pevent);                          /* 延時到,就緒任務                                        */
    OS_EXIT_CRITICAL();
    *err = OS_TIMEOUT;                           /* 顯示延時發生                        */
    return ((void *)0);                          /* 返回空消息                             */
}
/*$PAGE*/
/*
*********************************************************************************************************
*                                        發送消息到隊列
*
* 函數描述:    該函數發送一個消息到隊列
*
* 輸入參數 :   pevent        指向帶有期望隊列的ECB的指針
*
*              msg           指向發送消息的指針.  不要發送空指針
*
* 返回值  :    OS_NO_ERR               調用成功,消息被發送
*              OS_Q_FULL               隊列由于滿不接收更多的消息
*              OS_ERR_EVENT_TYPE       沒有傳遞一個指向隊列的指針
*              OS_ERR_PEVENT_NULL      'pevent' 是一個空指針
*              OS_ERR_POST_NULL_PTR    發送一個空指針
*********************************************************************************************************
*/

#if OS_Q_POST_EN > 0
INT8U  OSQPost (OS_EVENT *pevent, void *msg)
{
#if OS_CRITICAL_METHOD == 3                      /* 為CPU狀態寄存器分配存儲變量        */
    OS_CPU_SR  cpu_sr;
#endif
    OS_Q      *pq;


#if OS_ARG_CHK_EN > 0
    if (pevent == (OS_EVENT *)0) 
    {                                                   /* 無效的 'pevent'                          */
        return (OS_ERR_PEVENT_NULL);
    }
    if (msg == (void *)0)
     {                                                             /* 沒有發送一個空指針   */
        return (OS_ERR_POST_NULL_PTR);
    }
    if (pevent->OSEventType != OS_EVENT_TYPE_Q) 
    {                                                                    /* 無效的事件塊類型      */
        return (OS_ERR_EVENT_TYPE);
    }
#endif
    OS_ENTER_CRITICAL();
    if (pevent->OSEventGrp != 0x00)
    {                                                        /* 看是否任務正在等待消息隊列            */
        OS_EventTaskRdy(pevent, msg, OS_STAT_Q);      /* 就緒等待事件的最高優先級的任務,在TCB中放消息 */
        OS_EXIT_CRITICAL();
        OS_Sched();                                   /* 尋找HPT就緒運行     */
        return (OS_NO_ERR);
    }
    pq = (OS_Q *)pevent->OSEventPtr;                  /* 指向QCB            */
    if (pq->OSQEntries >= pq->OSQSize) 
    {                                                     /* 檢查消息是否已滿?                   */
        OS_EXIT_CRITICAL();
        return (OS_Q_FULL);
    }
    *pq->OSQIn++ = msg;                               /* 把消息插入隊列                    */
    pq->OSQEntries++;                                 /* 增加隊列中的消息數       */
    if (pq->OSQIn == pq->OSQEnd) 
    {                                                  /* 邊界檢查         */
        pq->OSQIn = pq->OSQStart;
    }
    OS_EXIT_CRITICAL();
    return (OS_NO_ERR);
}
#endif
/*$PAGE*/
/*
*********************************************************************************************************
*                                   發送消息到隊列前端
*
* 函數描述: 該函數發送消息到隊列,但是不象OSQPost(), 消息被放在隊列前端而不是末尾。實現后進先出。
*
* 輸入參數  : pevent        指向帶有期望隊列的ECB的指針
*
*              msg          指向發送消息的指針.  不要發送空指針
*
* 返回值  :    OS_NO_ERR               調用成功,消息被發送
*              OS_Q_FULL               隊列由于滿不接收更多的消息
*              OS_ERR_EVENT_TYPE       沒有傳遞一個指向隊列的指針
*              OS_ERR_PEVENT_NULL      'pevent' 是一個空指針
*              OS_ERR_POST_NULL_PTR    發送一個空指針
*********************************************************************************************************
*/

#if OS_Q_POST_FRONT_EN > 0
INT8U  OSQPostFront (OS_EVENT *pevent, void *msg)
{
#if OS_CRITICAL_METHOD == 3                      /* 為CPU狀態寄存器分配存儲變量             */
    OS_CPU_SR  cpu_sr;
#endif
    OS_Q      *pq;


#if OS_ARG_CHK_EN > 0
    if (pevent == (OS_EVENT *)0) 
    {                                                                /* 無效的 'pevent'      */
        return (OS_ERR_PEVENT_NULL);
    }
    if (msg == (void *)0) 
    {                                                                   /* 沒有發送一個空指針   */
        return (OS_ERR_POST_NULL_PTR);
    }
    if (pevent->OSEventType != OS_EVENT_TYPE_Q) 
    {                                                      /* 無效的事件塊類型       */
        return (OS_ERR_EVENT_TYPE);
    }
#endif
    OS_ENTER_CRITICAL();
    if (pevent->OSEventGrp != 0x00) 
    {                                                              /* 看是否任務正在等待消息隊列      */
        OS_EventTaskRdy(pevent, msg, OS_STAT_Q);      /* 就緒等待事件的最高優先級的任務,在TCB中放消息  */
        OS_EXIT_CRITICAL();
        OS_Sched();                                   /* 尋找HPT就緒運行        */
        return (OS_NO_ERR);
    }
    pq = (OS_Q *)pevent->OSEventPtr;                  /* 指向QCB                  */
    if (pq->OSQEntries >= pq->OSQSize) 
    {                                              /* 檢查消息是否已滿?                   */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美高清视频在线高清观看mv色露露十八| 理论电影国产精品| 国产视频一区二区在线观看| 欧美一卡2卡三卡4卡5免费| 欧美日本一区二区在线观看| 一本到不卡免费一区二区| 色综合天天综合网国产成人综合天| 成人妖精视频yjsp地址| 粉嫩欧美一区二区三区高清影视 | 亚洲一区二区精品3399| 有坂深雪av一区二区精品| 亚洲精选免费视频| 亚洲一区二区三区爽爽爽爽爽| 亚洲综合丝袜美腿| 天堂资源在线中文精品| 奇米影视一区二区三区| 韩国精品在线观看| 99久久免费精品| 欧美少妇性性性| 日韩视频在线永久播放| 精品福利二区三区| 日韩一区有码在线| 亚洲国产精品一区二区尤物区| 日韩av一二三| 国产高清视频一区| 一本到不卡免费一区二区| 欧美美女直播网站| 国产亚洲一区二区在线观看| 国产精品家庭影院| 首页欧美精品中文字幕| 国产成人精品午夜视频免费| 在线影院国内精品| 久久久五月婷婷| 亚洲精品成人天堂一二三| 久久国产人妖系列| 91麻豆蜜桃一区二区三区| 欧美一区国产二区| 亚洲视频一区二区在线| 肉肉av福利一精品导航| 高潮精品一区videoshd| 欧美精品久久久久久久多人混战 | 亚洲777理论| 国产精品自拍毛片| 欧美日韩精品免费观看视频| 精品国产乱码久久久久久久| 一区二区三区日本| 国产九色sp调教91| 欧美日本在线播放| 亚洲人成影院在线观看| 激情久久五月天| 在线播放中文一区| 亚洲激情男女视频| 成人18视频在线播放| 日韩欧美资源站| 亚洲高清免费一级二级三级| 成人性生交大片| 精品国产凹凸成av人网站| 三级久久三级久久| 欧美探花视频资源| 一区二区三区在线观看动漫| 成人午夜又粗又硬又大| 久久新电视剧免费观看| 美国欧美日韩国产在线播放| 欧美自拍丝袜亚洲| 亚洲猫色日本管| 一本一道久久a久久精品综合蜜臀| 久久蜜桃av一区二区天堂| 麻豆精品国产91久久久久久| 欧美三级资源在线| 亚洲国产精品久久久久秋霞影院| 波多野结衣欧美| 中文字幕精品在线不卡| 黄一区二区三区| 精品欧美一区二区在线观看| 日韩av高清在线观看| 欧美区视频在线观看| 五月婷婷综合网| 欧美欧美欧美欧美| 午夜av区久久| 欧美一区二区在线视频| 蜜臀久久久久久久| 日韩欧美一级二级| 国产一区免费电影| 337p粉嫩大胆噜噜噜噜噜91av| 久久精品国产免费看久久精品| 日韩欧美一级片| 国模冰冰炮一区二区| 久久久不卡网国产精品一区| 国产91丝袜在线播放| 中文字幕一区二区三区色视频| 99精品久久久久久| 亚洲成人动漫一区| 精品裸体舞一区二区三区| 国产成人亚洲综合色影视 | 94-欧美-setu| 亚洲福利电影网| 欧美丰满少妇xxxbbb| 韩国v欧美v日本v亚洲v| 国产视频亚洲色图| 色综合中文字幕| 日韩二区三区在线观看| 久久综合国产精品| 在线观看欧美精品| 国产在线精品一区二区三区不卡| 国产清纯白嫩初高生在线观看91| 99国产麻豆精品| 美国精品在线观看| 尤物在线观看一区| www欧美成人18+| 欧洲av一区二区嗯嗯嗯啊| 精品一区二区三区视频在线观看 | 欧美人伦禁忌dvd放荡欲情| 老司机精品视频一区二区三区| 国产三级一区二区| 91精品一区二区三区在线观看| 国产乱子伦视频一区二区三区| 亚洲精品福利视频网站| 精品精品国产高清一毛片一天堂| 色综合一个色综合亚洲| 国产专区综合网| 香港成人在线视频| 国产精品欧美精品| 亚洲精品一区二区三区在线观看| 成人动漫视频在线| 美洲天堂一区二卡三卡四卡视频 | 久久久久久久综合狠狠综合| 欧美亚洲国产怡红院影院| 国产一区在线视频| 青青草国产精品亚洲专区无| 成人欧美一区二区三区在线播放| 欧美一区二区大片| 欧美午夜电影在线播放| 波多野结衣中文一区| 国模冰冰炮一区二区| 亚洲一区二区三区四区五区中文| 欧美国产综合一区二区| 精品久久久久久亚洲综合网 | 国产一区二区三区不卡在线观看| 亚洲夂夂婷婷色拍ww47| 中文字幕一区二区三区不卡在线 | 日韩免费在线观看| 欧美军同video69gay| 色婷婷激情久久| 国产成人午夜99999| 精东粉嫩av免费一区二区三区| 性欧美疯狂xxxxbbbb| 亚洲成人高清在线| 亚洲午夜国产一区99re久久| 亚洲码国产岛国毛片在线| 综合色天天鬼久久鬼色| 亚洲欧美在线观看| 亚洲黄色尤物视频| 亚洲一区在线观看视频| 亚洲午夜精品在线| 亚洲国产日韩a在线播放性色| 亚洲男人都懂的| 亚洲欧美区自拍先锋| 亚洲曰韩产成在线| 亚洲国产一区二区三区青草影视 | 精品久久99ma| 国产亚洲一区二区在线观看| 久久嫩草精品久久久精品| 国产日韩欧美制服另类| 国产精品乱码一区二三区小蝌蚪| 中文字幕在线播放不卡一区| 日韩一区中文字幕| 亚洲一本大道在线| 日韩av一区二区三区四区| 韩国成人在线视频| 成人国产精品免费观看动漫| 91在线无精精品入口| 精品视频免费看| 精品三级av在线| **欧美大码日韩| 天天爽夜夜爽夜夜爽精品视频| 青青国产91久久久久久| 国产成人啪午夜精品网站男同| 国产99精品国产| 色琪琪一区二区三区亚洲区| 日本高清不卡在线观看| 精品乱人伦一区二区三区| 国产精品国产成人国产三级| 午夜伊人狠狠久久| 国产伦精品一区二区三区免费迷| 99国产欧美久久久精品| 欧美一区二区福利在线| 国产精品久久久久一区二区三区| 亚洲一区二区三区免费视频| 精品一区二区成人精品| 色综合 综合色| 久久久久久麻豆| 亚洲国产毛片aaaaa无费看| 国产麻豆午夜三级精品| 欧洲色大大久久| 久久久久久久久久久久久女国产乱| 亚洲精品菠萝久久久久久久| 国产一区二区三区久久久| 在线观看日韩电影| 国产精品久久久久婷婷二区次| 五月婷婷色综合|