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

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

?? os_q.c

?? RTOS 51,51單片機嵌入式操作系統
?? 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一区二区三区免费野_久草精品视频
国产女同性恋一区二区| 欧美性生交片4| 久久99蜜桃精品| 一区二区三区日韩欧美| 亚洲手机成人高清视频| 亚洲欧美日韩国产综合在线| 亚洲欧洲在线观看av| 国产精品污网站| 亚洲人成7777| 亚洲国产cao| 日本美女视频一区二区| 精品一区在线看| 成人爱爱电影网址| 91久久免费观看| 51精品国自产在线| xf在线a精品一区二区视频网站| 日本一区二区免费在线 | 成人少妇影院yyyy| 92国产精品观看| 欧美日产在线观看| 久久免费美女视频| 亚洲少妇30p| 日韩中文字幕一区二区三区| 韩国v欧美v亚洲v日本v| 国产xxx精品视频大全| 91最新地址在线播放| 欧美日韩一区二区三区视频| 51精品久久久久久久蜜臀| 久久精品日产第一区二区三区高清版| 国产精品美女久久久久av爽李琼| 亚洲高清免费视频| 国产精品亚洲一区二区三区妖精| 在线亚洲高清视频| 久久女同精品一区二区| 一区二区三区产品免费精品久久75| 日本欧美在线观看| 成人美女在线观看| 日韩欧美专区在线| 婷婷国产在线综合| 国产精品一二三| 在线精品视频小说1| 精品99一区二区三区| 亚洲黄色尤物视频| 丁香桃色午夜亚洲一区二区三区| 欧美日韩在线播| 最新久久zyz资源站| 美女脱光内衣内裤视频久久影院| 波多野结衣在线一区| 日韩女优制服丝袜电影| 一区二区三区日韩精品视频| 福利一区在线观看| 精品三级在线观看| 香蕉成人啪国产精品视频综合网 | 91精品综合久久久久久| 另类中文字幕网| 中文字幕乱码日本亚洲一区二区| 中文字幕av一区二区三区| 中文字幕一区二区三区不卡在线 | 国产精品99久久久久久久vr| 欧美日韩高清在线| 亚洲色图欧洲色图婷婷| 成人动漫在线一区| 国产精品三级电影| 黄一区二区三区| 欧美日韩小视频| 亚洲丰满少妇videoshd| 在线观看一区二区精品视频| 日韩毛片视频在线看| 欧美日韩一区二区三区在线| 亚洲欧洲性图库| 国产成人精品一区二区三区网站观看| 91精品国产91热久久久做人人| 亚洲欧美日韩国产综合| 色婷婷激情一区二区三区| 自拍偷在线精品自拍偷无码专区 | 看国产成人h片视频| 欧美精品自拍偷拍| 天天做天天摸天天爽国产一区| 欧美日韩小视频| 日韩电影一二三区| 99国产精品久久久久久久久久久| 亚洲影院久久精品| 国产精品无圣光一区二区| 欧美tk丨vk视频| 欧美日韩色综合| 99久久精品情趣| 国产成人午夜高潮毛片| 麻豆成人免费电影| 亚洲福利电影网| 亚洲激情五月婷婷| 国产精品麻豆一区二区| 久久亚洲精品小早川怜子| 欧美伦理影视网| 欧美自拍偷拍一区| aaa欧美大片| 97久久精品人人做人人爽| 高清不卡在线观看av| 国产一区亚洲一区| 久久er精品视频| 日本aⅴ免费视频一区二区三区| 激情久久五月天| 久久精品人人做| 91美女在线看| 极品少妇xxxx精品少妇| 欧美日韩一区视频| 粉嫩aⅴ一区二区三区四区 | 国产福利一区二区| 一区二区三区中文字幕| 精品国偷自产国产一区| 91啪亚洲精品| 国产一区二区三区综合| 一区二区激情视频| 日本一区二区久久| 欧美一级xxx| 日本福利一区二区| 国产91精品一区二区麻豆网站 | 不卡一区二区在线| 青青草伊人久久| 成人欧美一区二区三区视频网页| 欧美日韩亚洲高清一区二区| 国产黄色精品网站| 日韩高清在线一区| 亚洲精品国产一区二区精华液| 欧美变态tickling挠脚心| 欧美在线视频你懂得| 国产高清精品久久久久| 日产国产欧美视频一区精品| 亚洲伦在线观看| 国产精品伦一区二区三级视频| 91精品国产91综合久久蜜臀| 欧美中文一区二区三区| 不卡的av网站| 懂色av一区二区三区免费观看| 毛片一区二区三区| 爽好多水快深点欧美视频| 亚洲一区视频在线观看视频| 亚洲欧洲av一区二区三区久久| 久久蜜桃av一区精品变态类天堂| 欧美一级高清片在线观看| 欧美日韩免费一区二区三区| 色综合久久中文字幕综合网| 成人毛片视频在线观看| 国产99久久久国产精品潘金网站| 国产在线观看免费一区| 黄色小说综合网站| 蜜臀精品一区二区三区在线观看 | 福利视频网站一区二区三区| 激情深爱一区二区| 国产一区中文字幕| 国产美女主播视频一区| 国产高清一区日本| 99国内精品久久| 99re这里只有精品首页| 99v久久综合狠狠综合久久| bt欧美亚洲午夜电影天堂| 成人在线综合网站| 成人av免费在线观看| 色综合天天综合网国产成人综合天 | 日本女人一区二区三区| 日本不卡免费在线视频| 麻豆视频观看网址久久| 久久99九九99精品| 国产成人午夜电影网| 成人精品国产一区二区4080| 99久久99久久精品国产片果冻| 色婷婷综合久久久中文字幕| 欧美天堂亚洲电影院在线播放| 欧美剧在线免费观看网站| 日韩一区二区免费电影| 精品盗摄一区二区三区| 国产欧美日韩另类一区| 日韩美女啊v在线免费观看| 亚洲国产精品自拍| 精品一区二区免费看| 丁香桃色午夜亚洲一区二区三区| 91视频在线看| 欧美日韩国产高清一区二区三区 | 中文字幕一区二区三区乱码在线 | 日本一区二区三区国色天香| 亚洲三级理论片| 奇米影视7777精品一区二区| 国产麻豆精品theporn| 91影院在线免费观看| 欧美一二三四在线| 国产精品麻豆久久久| 丝袜诱惑亚洲看片| 成人免费观看男女羞羞视频| 欧美色欧美亚洲另类二区| 精品午夜久久福利影院| 欧美福利视频导航| 日韩av电影一区| 91精品在线观看入口| 午夜精品成人在线视频| 欧美日韩在线播放| 日韩av网站免费在线| 日韩三级免费观看| 久久99精品国产麻豆婷婷洗澡| 日韩精品一区二区三区蜜臀| 黑人精品欧美一区二区蜜桃| 久久综合色婷婷|