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

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

?? os_q.c

?? RTOS 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一区二区三区免费野_久草精品视频
色婷婷综合激情| 欧美精品三级在线观看| 亚洲女人****多毛耸耸8| 欧美日韩精品电影| 国产91精品久久久久久久网曝门| 一区二区三区精品| 久久久高清一区二区三区| 91精彩视频在线| 国产大陆亚洲精品国产| 亚洲福利一区二区三区| 国产精品你懂的| 日韩精品专区在线影院重磅| 色哟哟精品一区| 韩国av一区二区| 日韩不卡手机在线v区| 亚洲欧洲无码一区二区三区| 精品理论电影在线观看 | 欧美亚洲动漫另类| 欧美最猛性xxxxx直播| 粉嫩一区二区三区性色av| 日本伊人精品一区二区三区观看方式 | 日韩vs国产vs欧美| 亚洲综合图片区| 国产精品传媒入口麻豆| 久久九九国产精品| 精品日本一线二线三线不卡| 欧美日韩高清一区二区不卡| 色哦色哦哦色天天综合| 99久久亚洲一区二区三区青草 | 亚洲444eee在线观看| 亚洲视频一区二区在线| 国产精品欧美一级免费| 久久免费的精品国产v∧| 欧美白人最猛性xxxxx69交| 欧美日韩不卡视频| 欧美视频在线观看一区二区| 色婷婷综合久久| 色狠狠桃花综合| 91网页版在线| 91在线看国产| 91亚洲国产成人精品一区二区三| 国产99久久久国产精品潘金| 国产乱码精品一区二区三区忘忧草 | av动漫一区二区| 99天天综合性| 99精品欧美一区二区三区综合在线| 国产成都精品91一区二区三| 国产乱人伦偷精品视频免下载| 激情六月婷婷综合| 国产精品综合一区二区| 国产成人在线视频网址| 国产成人日日夜夜| 成人av高清在线| 91免费版在线看| 欧美天天综合网| 4hu四虎永久在线影院成人| 在线不卡中文字幕播放| 日韩一二三四区| 久久久久久麻豆| 亚洲国产成人午夜在线一区| 国产精品进线69影院| 综合久久综合久久| 亚洲一区二区三区精品在线| 丝袜诱惑制服诱惑色一区在线观看| 麻豆免费精品视频| 国产成人av电影免费在线观看| 99精品视频一区二区| 欧美伊人精品成人久久综合97| 91精品蜜臀在线一区尤物| 精品美女一区二区| 日韩毛片一二三区| 亚洲成人三级小说| 国产最新精品免费| 国产精品自拍毛片| 久久综合中文字幕| 亚洲图片另类小说| 丝瓜av网站精品一区二区| 国内精品国产成人国产三级粉色 | 日韩欧美一级二级三级 | 亚洲午夜激情网站| 久久99久久久久| 99久久久免费精品国产一区二区| 在线观看免费一区| 久久中文娱乐网| 亚洲精品亚洲人成人网在线播放| 人妖欧美一区二区| 成人av在线网站| 4438成人网| 亚洲国产高清aⅴ视频| 视频一区中文字幕国产| 丁香啪啪综合成人亚洲小说| 欧美日韩在线播放一区| 亚洲一区视频在线| 美女视频免费一区| 99久久精品国产一区| 91精品国产乱| 国产精品盗摄一区二区三区| 秋霞av亚洲一区二区三| 色综合视频在线观看| 精品久久一二三区| 亚洲影视资源网| 处破女av一区二区| 91精品国产91热久久久做人人| 中文字幕一区二区三区视频| 理论片日本一区| 一本久久a久久精品亚洲| 久久久亚洲精品一区二区三区| 一区二区免费视频| 不卡的看片网站| 欧美tk—视频vk| 亚洲成精国产精品女| 99精品黄色片免费大全| 26uuu欧美| 奇米一区二区三区av| 日本精品视频一区二区三区| 国产午夜亚洲精品理论片色戒| 日本免费新一区视频| 在线观看一区二区精品视频| 国产欧美日韩视频在线观看| 久久综合综合久久综合| 欧美视频一区二| 亚洲精品免费看| www.亚洲免费av| 国产日韩欧美电影| 国产一区二区在线观看视频| 欧美一区二区三区影视| 午夜精品久久久久久| 色婷婷激情综合| 亚洲人成网站精品片在线观看| 国产乱码精品一区二区三| 精品剧情在线观看| 麻豆中文一区二区| 精品久久久久久久久久久久久久久 | av成人免费在线| 国产精品网曝门| 成人在线视频一区| 欧美激情一二三区| 风流少妇一区二区| 中文字幕不卡三区| 不卡的电影网站| 亚洲素人一区二区| 91福利国产成人精品照片| 亚洲免费伊人电影| 欧美在线啊v一区| 亚洲国产一区在线观看| 欧美日本在线观看| 日韩国产欧美在线播放| 日韩视频一区二区三区在线播放| 爽好久久久欧美精品| 日韩欧美国产三级电影视频| 久色婷婷小香蕉久久| 久久久蜜桃精品| 风间由美一区二区三区在线观看 | 亚洲成a人片综合在线| 欧美日韩国产高清一区二区三区| 午夜国产精品一区| 日韩欧美国产综合一区| 国内精品久久久久影院薰衣草| 国产欧美久久久精品影院| 成人小视频免费观看| 亚洲视频每日更新| 欧美午夜精品免费| 久久99日本精品| 国产精品网友自拍| 欧美三级三级三级| 老司机精品视频导航| 国产欧美精品日韩区二区麻豆天美| 成人美女在线视频| 亚洲第一搞黄网站| 26uuu亚洲| 91蜜桃免费观看视频| 亚洲一区二区3| 精品国产一区二区三区四区四 | 欧美一级淫片007| 国产精品一区二区91| 亚洲猫色日本管| 91麻豆精品国产91久久久使用方法| 极品销魂美女一区二区三区| 国产精品美女久久久久久久网站| 精品视频全国免费看| 激情综合亚洲精品| 亚洲欧美经典视频| 日韩美一区二区三区| 99re视频精品| 免费看黄色91| 亚洲欧洲国产日韩| 日韩一级片网站| 99精品偷自拍| 九九九久久久精品| 一区二区三区电影在线播| 精品久久国产字幕高潮| 色婷婷久久综合| 激情小说亚洲一区| 一个色综合网站| 中文字幕欧美激情| 欧美一区二区视频在线观看| 99精品视频一区二区三区| 免费成人小视频| 亚洲在线观看免费| 国产欧美1区2区3区|