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

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

?? os_q.c

?? small RTOS在C8051F單片機上的應用
?? C
?? 第 1 頁 / 共 2 頁
字號:
                /* 判斷消息入隊前消息隊列是否為空 */
        if (Buf[0] == 1)
        {
                /* 為空,可能有任務等待消息,查找之 */
            temp = Buf[3];
#if OS_MAX_TASKS < 9
            for (i = 0; i < OS_MAX_TASKS; i++)
            {
                if ((temp & 0x01) != 0)
                {
                    break;
                }
                temp = temp >> 1;
            }
            if (i < OS_MAX_TASKS )
            {
                /* 查到,使其中優先級最高的任務進入就緒狀態,并將其從等待隊列中清除 */
                Buf[3] &= ~OSMapTbl[i];
                OSIntSendSignal(i);
            }
#else
            for (i = 0; i < 8; i++)
            {
                if ((temp & 0x01) != 0)
                {
                    break;
                }
                temp = temp >> 1;
            }
            if (i >= 8 )
            {
                temp = Buf[4];
                for (; i < OS_MAX_TASKS; i++)
                {
                    if ((temp & 0x01) != 0)
                    {
                        break;
                    }
                    temp = temp >> 1;
                }
            }
            if (i < OS_MAX_TASKS )
            {
                /* 查到,使其中優先級最高的任務進入就緒狀態,并將其從等待隊列中清除 */
                if (i < 8)
                {
                    Buf[3] &= ~OSMapTbl[i];
                }
                else
                {
                    Buf[4] &= ~OSMapTbl[i & 0x07];
                }
                OSIntSendSignal(i);
            }
#endif
        }
        OS_EXIT_CRITICAL();
        return OS_Q_OK;
    }
    else
    {
        OS_EXIT_CRITICAL();
        return OS_Q_FULL;
    }
}
#endif

/*********************************************************************************************************
** 函數名稱: OSQIntPostFront
** 功能描述: 中斷中LIFO方式發送消息
** 輸 入: Buf:指向隊列的指針
**         Data:消息數據
** 輸 出: OS_Q_FULL:隊列滿
**         OS_Q_OK:發送成功
** 全局變量: 無
** 調用模塊: OSIntSendSignal,OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
**
** 作 者: 陳明計
** 日 期: 2002年9月1日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#if EN_OS_Q_INT_POST_FRONT > 0 || EN_OS_Q_POST_FRONT > 0
        uint8 OSQIntPostFront(uint8 OS_Q_MEM_SEL *Buf, uint8 Data)
{
    uint8 temp,i;

#if EN_OS_Q_CHK > 0
    if (Buf == NULL)
    {
        return NOT_OK;
    }
#endif

    OS_ENTER_CRITICAL();

                /* 隊列是否已滿 */
#if OS_MAX_TASKS < 9
    if (Buf[0] < (Buf[1]-4))
#else
    if (Buf[0] < (Buf[1]-5))
#endif
    {
                /* 存儲消息 */
        Buf[Buf[2]] = Data;
        Buf[0]++;           /* 消息數目增加一 */
                /* 指向新的將要出隊的消息 */
        Buf[2]--;
#if OS_MAX_TASKS < 9
        if (Buf[2] < 4)
#else
        if (Buf[2] < 5)
#endif
        {
            Buf[2] = Buf[1]-1;
        }
        
                /* 判斷消息入隊前消息隊列是否為空 */
        if (Buf[0] == 1)
        {
                /* 為空,可能有任務等待消息,查找之 */
            temp = Buf[3];
#if OS_MAX_TASKS < 9
            for (i = 0; i < OS_MAX_TASKS; i++)
            {
                if ((temp & 0x01) != 0)
                {
                    break;
                }
                temp = temp >> 1;
            }
            if (i < OS_MAX_TASKS )
            {
                /* 查到,使其中優先級最高的任務進入就緒狀態,并將其從等待隊列中清除 */
                Buf[3] &= ~OSMapTbl[i];
                OSIntSendSignal(i);
            }
#else
            for (i = 0; i < 8; i++)
            {
                if ((temp & 0x01) != 0)
                {
                    break;
                }
                temp = temp >> 1;
            }
            if (i >= 8 )
            {
                temp = Buf[4];
                for (; i < OS_MAX_TASKS; i++)
                {
                    if ((temp & 0x01) != 0)
                    {
                        break;
                    }
                    temp = temp >> 1;
                }
            }
            if (i < OS_MAX_TASKS )
            {
                /* 查到,使其中優先級最高的任務進入就緒狀態,并將其從等待隊列中清除 */
                if (i < 8)
                {
                    Buf[3] &= ~OSMapTbl[i];
                }
                else
                {
                    Buf[4] &= ~OSMapTbl[i & 0x07];
                }
                OSIntSendSignal(i);
            }
#endif
        }
        OS_EXIT_CRITICAL();
        return OS_Q_OK;
    }
    else
    {
        OS_EXIT_CRITICAL();
        return OS_Q_FULL;
    }
}
#endif

/*********************************************************************************************************
** 函數名稱: OSQPost
** 功能描述: FIFO方式發送消息
** 輸 入: Buf:指向隊列的指針
**         Data:消息數據
** 輸 出: OS_Q_FULL:隊列滿
**         OS_Q_OK:發送成功
** 全局變量: 無
** 調用模塊: OSQIntPost,OSSched
**
** 作 者: 陳明計
** 日 期: 2002年9月1日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#if EN_OS_Q_POST > 0
        uint8 OSQPost(uint8 OS_Q_MEM_SEL *Buf, uint8 Data)
{
#if EN_OS_Q_CHK > 0
    if (Buf == NULL)
    {
        return NOT_OK;
    }
#endif

    if (OSQIntPost(Buf,Data) == OS_Q_OK)
    {
        OSSched();
        return OS_Q_OK;
    }
    else
    {
        return OS_Q_FULL;
    }
}
#endif

/*********************************************************************************************************
** 函數名稱: OSQPostFront
** 功能描述: LIFO方式發送消息
** 輸 入: Buf:指向隊列的指針
**         Data:消息數據
** 輸 出: OS_Q_FULL:隊列滿
**         OS_Q_OK:發送成功
** 全局變量: 無
** 調用模塊: OSQIntPostFront,OSSched
**
** 作 者: 陳明計
** 日 期: 2002年9月1日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#if EN_OS_Q_POST_FRONT > 0
        uint8 OSQPostFront(uint8 OS_Q_MEM_SEL *Buf, uint8 Data)
{
#if EN_OS_Q_CHK > 0
    if (Buf == NULL)
    {
        return NOT_OK;
    }
#endif

    if (OSQIntPostFront(Buf,Data) == OS_Q_OK)
    {
        OSSched();
        return OS_Q_OK;
    }
    else
    {
        return OS_Q_FULL;
    }
}
#endif

/*********************************************************************************************************
** 函數名稱: OSQNMsgs
** 功能描述: 取得消息隊列中消息數
** 輸 入: Buf:指向隊列的指針
** 輸 出: 消息數
** 全局變量: 無
** 調用模塊: OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
**
** 作 者: 陳明計
** 日 期: 2002年9月1日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#if EN_OS_Q_NMsgs > 0
        uint8 OSQNMsgs(uint8 OS_Q_MEM_SEL *Buf)
{
    uint8 temp;

#if EN_OS_Q_CHK > 0
    if (Buf == NULL)
    {
        return 0;
    }
#endif

    OS_ENTER_CRITICAL();
    temp = Buf[0];
    OS_EXIT_CRITICAL();
    return temp;
}
#endif

/*********************************************************************************************************
** 函數名稱: OSQSize
** 功能描述: 取得消息隊列總容量
** 輸 入: Buf:指向隊列的指針
** 輸 出: 消息隊列總容量
** 全局變量: 無
** 調用模塊: OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
**
** 作 者: 陳明計
** 日 期: 2002年9月1日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#if EN_OS_Q_SIZE > 0
        uint8 OSQSize(uint8 OS_Q_MEM_SEL *Buf)
{
    uint8 temp;

#if EN_OS_Q_CHK > 0
    if (Buf == NULL)
    {
        return 0;
    }
#endif

    OS_ENTER_CRITICAL();
#if OS_MAX_TASKS < 9
    temp = Buf[1] - 4;
#else
    temp = Buf[1] - 5;
#endif
    OS_EXIT_CRITICAL();
    return temp;
}
#endif

/*********************************************************************************************************
** 函數名稱: OSQFlush
** 功能描述: 清空隊列
** 輸 入: Buf:指向隊列的指針
** 輸 出: 無
** 全局變量: 無
** 調用模塊: OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
**
** 作 者: 陳明計
** 日 期: 2002年9月1日
**-------------------------------------------------------------------------------------------------------
** 修改人: 陳明計
** 日 期: 2002年10月26日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#if EN_OS_Q_FLUSH > 0
        void OSQFlush (uint8 OS_Q_MEM_SEL *Buf)
{
#if EN_OS_Q_CHK > 0
    if (Buf == NULL)
    {
        return;
    }
#endif

    Buf[0] = 0;
#if OS_MAX_TASKS < 9
    Buf[2] = 4;
#else
    Buf[2] = 5;
#endif
}
#endif

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧洲一区二区av| 欧美日韩视频专区在线播放| 亚洲另类春色校园小说| 欧美一区二区在线播放| aaa国产一区| 激情综合色综合久久| 亚洲欧美视频一区| 国产亚洲精品bt天堂精选| 欧美亚洲高清一区二区三区不卡| 国产一区 二区| 午夜精品福利在线| 国产欧美视频在线观看| 日韩女优毛片在线| 欧美日韩亚洲综合在线 | 国产日韩欧美激情| 8x福利精品第一导航| 色哟哟一区二区在线观看| 国产在线不卡一卡二卡三卡四卡| 亚洲国产精品久久久久秋霞影院 | 欧美极品aⅴ影院| 精品国产91洋老外米糕| 91精品黄色片免费大全| 欧美色综合网站| 欧美在线观看视频在线| 99这里只有久久精品视频| 成人一区二区视频| 国产a久久麻豆| 国产一区二区三区四| 久久国产精品色婷婷| 蜜臀va亚洲va欧美va天堂| 亚洲国产精品麻豆| 午夜视频在线观看一区| 一区二区三区日韩| 亚洲综合男人的天堂| 亚洲色图第一区| 亚洲另类在线视频| 伊人开心综合网| 一区二区在线免费观看| 一区二区三区四区五区视频在线观看| 国产精品美女www爽爽爽| 欧美激情在线看| 国产精品传媒在线| 亚洲欧美日韩中文播放 | 亚洲资源中文字幕| 亚洲成人免费在线| 日韩国产在线一| 日本色综合中文字幕| 麻豆国产91在线播放| 麻豆精品一区二区综合av| 麻豆精品一区二区综合av| 久久99久国产精品黄毛片色诱| 黑人精品欧美一区二区蜜桃| 激情另类小说区图片区视频区| 极品少妇一区二区| 丁香婷婷综合网| 91麻豆免费在线观看| 欧美在线观看视频在线| 91精品国产综合久久久蜜臀图片| 91精品国产色综合久久久蜜香臀| 欧美一级艳片视频免费观看| 精品国产区一区| 亚洲欧洲日韩一区二区三区| 亚洲免费色视频| 免费欧美日韩国产三级电影| 激情文学综合网| 99热这里都是精品| 欧美日韩精品系列| 精品少妇一区二区三区视频免付费 | 亚洲第一av色| 视频一区视频二区中文| 精品一区中文字幕| 91毛片在线观看| 日韩亚洲欧美成人一区| 国产亚洲1区2区3区| 亚洲日本va在线观看| 免费成人美女在线观看| 成人黄色网址在线观看| 欧美人妇做爰xxxⅹ性高电影| 日韩欧美一级二级三级| 国产精品五月天| 日韩成人免费看| www.日韩精品| 日韩一区二区三区视频| 亚洲国产精品精华液2区45| 亚洲韩国精品一区| 国产99精品在线观看| 欧美怡红院视频| 久久久久久夜精品精品免费| 亚洲在线观看免费| 国产精品自拍一区| 欧美调教femdomvk| 久久久精品日韩欧美| 亚洲大片一区二区三区| 国产成a人无v码亚洲福利| 欧美日韩视频在线第一区| 国产欧美日韩视频在线观看| 丝袜美腿亚洲色图| av一区二区三区| 精品国产一区二区三区忘忧草 | 成年人午夜久久久| 日韩视频免费观看高清完整版 | 日本一区二区免费在线| 秋霞av亚洲一区二区三| 色综合婷婷久久| 国产网红主播福利一区二区| 五月天亚洲婷婷| 色八戒一区二区三区| 欧美高清在线精品一区| 精品一区二区三区在线播放视频| 欧美主播一区二区三区| 亚洲国产精品成人综合色在线婷婷| 亚洲mv在线观看| 色综合视频在线观看| 中文无字幕一区二区三区 | 成人永久免费视频| 2023国产精品自拍| 麻豆免费看一区二区三区| 欧美日韩黄色一区二区| 亚洲少妇最新在线视频| 大白屁股一区二区视频| 欧美电影精品一区二区| 免费国产亚洲视频| 欧美一卡2卡3卡4卡| 日韩激情一二三区| 4438x亚洲最大成人网| 亚洲成人av免费| 欧美日韩综合在线免费观看| 樱桃国产成人精品视频| 91视视频在线直接观看在线看网页在线看| 久久久综合视频| 国产福利91精品一区二区三区| 精品成人免费观看| 经典三级一区二区| 久久精子c满五个校花| 国产成人a级片| 中文在线一区二区| gogo大胆日本视频一区| 国产精品国产三级国产普通话99 | 国产精品影音先锋| 国产亚洲1区2区3区| 丁香桃色午夜亚洲一区二区三区| 国产欧美日本一区视频| 国产成人丝袜美腿| 国产精品国产三级国产aⅴ中文| 99视频在线精品| 亚洲永久精品大片| 欧美区一区二区三区| 麻豆久久一区二区| 国产欧美一区二区在线| 成人午夜av影视| 一区二区视频在线| 6080日韩午夜伦伦午夜伦| 老司机精品视频一区二区三区| 精品奇米国产一区二区三区| 国产精品99久久久久久似苏梦涵| 国产精品日韩成人| 欧美性猛交一区二区三区精品| 日韩精品亚洲专区| 精品国产伦一区二区三区观看体验| 国产乱码精品一区二区三区忘忧草| 国产精品欧美经典| 欧美三级日本三级少妇99| 久久精品二区亚洲w码| 国产精品网站导航| 欧美性猛片xxxx免费看久爱| 麻豆91免费观看| 国产精品色在线| 欧美精选在线播放| 国产91露脸合集magnet| 亚洲一区影音先锋| 337p粉嫩大胆噜噜噜噜噜91av| 成人av在线观| 日韩中文字幕不卡| 国产日韩欧美一区二区三区综合| 色8久久精品久久久久久蜜| 青草av.久久免费一区| 亚洲国产精品ⅴa在线观看| 欧美日韩午夜影院| 成人少妇影院yyyy| 日韩精品三区四区| 国产精品九色蝌蚪自拍| 日韩欧美中文字幕制服| 99精品黄色片免费大全| 久草精品在线观看| 亚洲一区二区三区不卡国产欧美| 久久午夜电影网| 精品视频资源站| 成人免费电影视频| 久久国产福利国产秒拍| 亚洲激情中文1区| 国产清纯白嫩初高生在线观看91| 欧美区视频在线观看| 97精品视频在线观看自产线路二 | 色狠狠桃花综合| 韩国v欧美v亚洲v日本v| 亚洲综合色噜噜狠狠| 国产精品色婷婷久久58| 精品久久久久久久久久久久包黑料| 色综合网色综合| 成人一区在线观看|