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

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

?? os_q.c

?? Small RTOS 下SJA1000驅動程序的編寫。主要介紹了在實時操作系統Small RTOS下
?? 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一区二区三区免费野_久草精品视频
色综合视频在线观看| 欧美探花视频资源| 日韩欧美一区在线观看| 亚洲激情中文1区| 97久久久精品综合88久久| 国产日韩亚洲欧美综合| 国产一区二区看久久| wwwwww.欧美系列| 捆绑紧缚一区二区三区视频| 日韩欧美成人一区二区| 亚洲视频中文字幕| 国产精品一二三四五| 国产亚洲一二三区| 免费成人在线观看| 精品免费日韩av| 国内精品免费**视频| 国产婷婷色一区二区三区四区| 精品一区二区三区免费视频| 欧美mv日韩mv| 不卡电影一区二区三区| 午夜精品久久一牛影视| 91麻豆精品久久久久蜜臀| 亚洲国产精品影院| 欧美一区二区日韩| 国产精品中文有码| 国产精品午夜免费| 亚洲精品在线观看视频| 欧美片网站yy| 色先锋资源久久综合| 本田岬高潮一区二区三区| 久久国产精品色| 久久精品国产99久久6| 中文字幕一区二区三区色视频| 日韩亚洲欧美综合| 欧美日韩二区三区| 91视频免费播放| 成人免费视频国产在线观看| 国内久久精品视频| 国产综合色视频| 亚洲午夜影视影院在线观看| 日韩欧美一级片| 91成人国产精品| 99精品欧美一区二区三区小说| 亚洲v中文字幕| 亚洲午夜精品在线| 亚洲色图在线视频| 国产精品成人免费在线| 国产亚洲成年网址在线观看| 欧美日韩成人在线| 色94色欧美sute亚洲线路一ni| 国产伦精品一区二区三区免费迷 | 《视频一区视频二区| 2024国产精品视频| 欧美v亚洲v综合ⅴ国产v| 91精品国产一区二区| 欧美色手机在线观看| 在线亚洲一区二区| 成人av影视在线观看| 国产99精品在线观看| 国产大陆亚洲精品国产| 成人免费观看av| 91影视在线播放| 欧美三级电影在线看| 欧美日韩成人在线一区| 欧美mv日韩mv国产网站app| 精品91自产拍在线观看一区| 欧美变态tickling挠脚心| 久久久综合九色合综国产精品| 久久综合av免费| 中文字幕色av一区二区三区| 亚洲国产成人porn| 久久99精品一区二区三区三区| 日本网站在线观看一区二区三区 | 日本韩国欧美一区| 91精品国产aⅴ一区二区| 久久综合九色综合97婷婷 | 大白屁股一区二区视频| 豆国产96在线|亚洲| 一本大道av一区二区在线播放| 欧美一区二区在线不卡| 久久久久久久精| 午夜精品久久久久久久99水蜜桃 | 国产精品久久综合| 午夜精品国产更新| 成人黄色在线视频| 欧美一区二区三区免费| **欧美大码日韩| 日本美女一区二区| 92国产精品观看| 国产亚洲精品bt天堂精选| 亚洲综合另类小说| av一区二区不卡| 亚洲国产成人在线| 日本系列欧美系列| 欧美日韩三级在线| 亚洲二区在线视频| 99久久夜色精品国产网站| 欧美成人精品高清在线播放| 亚洲福中文字幕伊人影院| 97久久精品人人澡人人爽| 国产精品久久久久久久岛一牛影视 | 91九色最新地址| 国产精品白丝在线| www.99精品| 亚洲日本在线看| 91久久免费观看| 亚洲一区二区三区影院| 色爱区综合激月婷婷| 亚洲日本韩国一区| 欧美视频在线不卡| 麻豆精品在线观看| 久久蜜桃av一区二区天堂| 韩国视频一区二区| 国产精品美女久久久久久久久久久| 国产一区二区三区综合| 国产女主播在线一区二区| youjizz国产精品| 亚洲一区二区三区激情| 欧美一区二区三区四区视频| 国内成人精品2018免费看| 久久蜜桃香蕉精品一区二区三区| 成人午夜精品在线| 91偷拍与自偷拍精品| 亚洲成人动漫在线观看| 精品sm捆绑视频| 欧洲精品一区二区三区在线观看| 视频一区二区三区中文字幕| 久久亚洲精品小早川怜子| 91社区在线播放| 久久99久久精品| 亚洲资源中文字幕| 久久久不卡网国产精品二区 | 免费观看成人av| 亚洲色图制服诱惑| 国产亚洲自拍一区| 欧美剧在线免费观看网站| 国产福利91精品| 久久激情五月婷婷| 日韩电影免费在线看| 亚洲欧美一区二区久久| 精品国免费一区二区三区| 777xxx欧美| 欧美日韩一区二区三区在线看 | 99久久99久久久精品齐齐| 日韩成人一级片| 亚洲影视在线观看| 亚洲欧洲制服丝袜| 亚洲视频一区二区在线| 欧美激情一区二区三区四区| 久久婷婷国产综合国色天香| 精品国产欧美一区二区| 欧美一二区视频| 久久亚洲综合色一区二区三区| 欧美日韩亚洲综合| 91精品一区二区三区久久久久久| 91亚洲大成网污www| 色综合久久久久综合99| 色婷婷一区二区| 在线免费观看日韩欧美| 色综合欧美在线视频区| 欧美亚洲另类激情小说| 欧美日韩一本到| 欧美xxxxx裸体时装秀| 2021中文字幕一区亚洲| 国产精品国产三级国产有无不卡 | 精品福利视频一区二区三区| 久久综合色婷婷| 亚洲综合色婷婷| 日韩电影在线看| www.亚洲色图.com| 日韩一级视频免费观看在线| 国产欧美日韩综合| 亚洲国产视频一区二区| 国产剧情在线观看一区二区| 在线观看91精品国产入口| 欧美r级电影在线观看| 一区二区免费在线播放| 高清国产一区二区三区| 欧美性大战xxxxx久久久| 欧美精品一区二区三区蜜桃| 一个色综合av| 97成人超碰视| 国产精品天天看| 国产xxx精品视频大全| 精品成人a区在线观看| 蜜臀av一区二区| 91麻豆精品国产91久久久使用方法| 亚洲手机成人高清视频| 成人性生交大片| 国产日韩一级二级三级| 国产中文一区二区三区| 精品日韩一区二区| 卡一卡二国产精品 | 国产一区二区三区免费观看| 欧美日韩国产美| 美女任你摸久久| 日韩欧美国产一区二区三区 | 一区二区在线观看视频在线观看| 国产精品99久久久久久久女警| 欧美一区二区三区喷汁尤物|