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

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

?? os_sem.c

?? SmallRTOSAVR.rar
?? C
字號:
/*********************************************************************************************************
**                                        Small RTOS
**                                   The Real-Time Kernel
**                           (c) Copyright 2002-2003, chenmingji
**                                     All Rights Reserved
**                                         V1.50.0
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: OS_sem.C
**創   建   人: 陳明計
**最后修改日期:  2004年9月5日
**描        述: Small RTOS信號量處理代碼
**
**--------------歷史版本信息----------------------------------------------------------------------------
** 創建人: 陳明計
** 版  本: V1.00
** 日 期: 2004年9月5日
** 描 述: 基本完成全新的Small RTOS核
**
**------------------------------------------------------------------------------------------------------
** 修改人:
** 版  本:
** 日 期:
** 描 述:  
**
**--------------當前版本修訂------------------------------------------------------------------------------
** 修改人: 焦進星
** 日 期: 2007年12月30日
** 描 述: 移植到AVR系列芯片,適用于atmega16/32等
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

#define  IN_OS_SEM
#define  IN_OS
#include "..\APP\config.h"

#if OS_MAX_EVENTS > 0
#if EN_OS_SEM > 0

/*********************************************************************************************************
** 函數名稱: OSSemCreate
** 功能描述: 初始信號量
** 輸 入: data:信號量初始值
** 輸 出: 事件指針
** 作 者: 陳明計
** 日 期: 2004年9月5日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/

        OS_EVENT * OSSemCreate(uint16 Data)
{
    OS_EVENT * Rt;

    OS_ENTER_CRITICAL();
    Rt = OSEventNew();
    if (Rt != NULL)
    {
        Rt->OSEventType = OS_EVENT_SEM;
        Rt->EventData.Cnt = Data;
    }
    OS_EXIT_CRITICAL();
    return Rt;
}

/*********************************************************************************************************
** 函數名稱: OSSemPend
** 功能描述: 等待一個信號量
** 輸 入: pEvent:事件指針
**         Tick:等待時間
** 輸 出: OS_NO_ERR:成功
**         OS_ERR_PEVENT_NULL:事件指針為空
**         OS_ERR_EVENT_TYPE:錯誤事件類型
**         OS_ERR_PEND_ISR:在IRS中等待事件
**         OS_EVENT_DEL:事件被刪除
**         OS_TIMEOUT:超時
** 作 者: 陳明計
** 日 期: 2004年9月5日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#if EN_OS_SEM_PENT > 0

        uint8 OSSemPend(OS_EVENT * pEvent, uint16 Tick)
{
    uint8 Rt;

    if (pEvent == NULL)
    {
        return OS_ERR_PEVENT_NULL;
    }

    OS_ENTER_CRITICAL();
    if (pEvent->OSEventType != OS_EVENT_SEM)    /* 這個事件不是信號量   */
    {
        Rt = OS_ERR_EVENT_TYPE;
        goto Error;
    }
    if (pEvent->EventData.Cnt == 0)             /* 無信號量             */
    {
        Rt = OSEventWait(pEvent, Tick);
        if (Rt != OS_NO_ERR)
        {
            goto Error;
        }
    }
    if (pEvent->OSEventType != OS_EVENT_SEM)    /* 這個事件不是信號量   */
    {
        Rt = OS_EVENT_DEL;                      /* 事件被刪除           */
        goto Error;
    }
    if(pEvent->EventData.Cnt == 0)              /* 無信號量             */
    {
        Rt = OS_TIMEOUT;
        goto Error;
    }

    pEvent->EventData.Cnt--;
    Rt = OS_NO_ERR;

Error:
    OS_EXIT_CRITICAL();
    return Rt;
}
#endif

/*********************************************************************************************************
** 函數名稱: OSSemAccept
** 功能描述: 無等待請求信號量
** 輸 入: pEvent:事件指針
** 輸 出: 信號量的值
** 作 者: 陳明計
** 日 期: 2004年9月5日
**-------------------------------------------------------------------------------------------------------
** 修改人: a
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#if EN_OS_SEM_ACCEPT > 0
        uint16 OSSemAccept(OS_EVENT * pEvent)
{
    uint8 Rt;

    Rt = 0;
    if (pEvent != NULL)
    {
        OS_ENTER_CRITICAL();
        if (pEvent->OSEventType == OS_EVENT_SEM)
        {
            if (pEvent->EventData.Cnt != 0)
            {
                Rt = pEvent->EventData.Cnt;
                pEvent->EventData.Cnt--;
            }
        }
        OS_EXIT_CRITICAL();
    }
    return Rt;
}
#endif


/*********************************************************************************************************
** 函數名稱: OSSemPost
** 功能描述: 發送一個信號量
** 輸 入: pEvent:事件指針
** 輸 出: OS_NO_ERR:成功
**         OS_ERR_PEVENT_NULL:事件指針為空
**         OS_ERR_EVENT_TYPE:錯誤事件類型
**         OS_SEM_OVF:信號量滿
** 作 者: 陳明計
** 日 期: 2004年9月5日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#if EN_OS_SEM_POST > 0
        uint8 OSSemPost(OS_EVENT * pEvent)
{
    uint8 Rt;

    if (pEvent == NULL)
    {
        return OS_ERR_PEVENT_NULL;
    }

    OS_ENTER_CRITICAL();
    if (pEvent->OSEventType != OS_EVENT_SEM)
    {
        Rt = OS_ERR_EVENT_TYPE;
    }
    else
    {
        if (pEvent->EventData.Cnt == (uint16)(-1))  /* 到達最大值 */
        {
            Rt = OS_SEM_OVF;                        /* 信號量滿   */
        }
        else
        {
            pEvent->EventData.Cnt++;
            OSEventResume(pEvent);
            Rt = OS_NO_ERR;
        }
    }
    OS_EXIT_CRITICAL();
    return Rt;
}
#endif

/*********************************************************************************************************
** 函數名稱: OSSemQuery
** 功能描述: 查詢信號量
** 輸 入: pEvent:事件指針
**         Cnt:用于輸出信號量的值
** 輸 出: OS_NO_ERR:成功
**         OS_ERR_PEVENT_NULL:事件指針為空
**         OS_ERR_EVENT_TYPE:錯誤事件類型
** 作 者: 陳明計
** 日 期: 2004年9月5日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#if EN_OS_SEM_QUERY > 0
        uint8 OSSemQuery(OS_EVENT * pEvent, uint16 *Cnt)
{
    uint8 Rt;
    
    if (pEvent == NULL)
    {
        return OS_ERR_PEVENT_NULL;
    }

    OS_ENTER_CRITICAL();
    if (pEvent->OSEventType != OS_EVENT_SEM)
    {
        Rt = OS_ERR_EVENT_TYPE;
    }
    else
    {
        *Cnt = pEvent->EventData.Cnt;
        Rt = OS_NO_ERR;
    }
    OS_EXIT_CRITICAL();
    return Rt;
}
#endif

/*********************************************************************************************************
** 函數名稱: OSSemDel
** 功能描述: 刪除信號量
** 輸 入: pEvent:事件指針
** 輸 出: OS_NO_ERR:成功
**         OS_ERR_PEVENT_NULL:事件指針為空
**         OS_ERR_EVENT_TYPE:錯誤事件類型
** 作 者: 陳明計
** 日 期: 2004年9月5日
**-------------------------------------------------------------------------------------------------------
** 修改人: a
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#if EN_OS_SEM_DEL > 0
        uint8 OSSemDel(OS_EVENT * pEvent)
{
    uint8 Rt;
    
    if (pEvent == NULL)
    {
        Rt = OS_ERR_PEVENT_NULL;
    }
    else
    {
        OS_ENTER_CRITICAL();
        if (pEvent->OSEventType != OS_EVENT_SEM)
        {
            Rt = OS_ERR_EVENT_TYPE;
        }
        else
        {
            Rt = OSEventFree(pEvent);
        }
        OS_EXIT_CRITICAL();
    }
    return Rt;
}

#endif

#endif
#endif
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区视频在线观看| 日韩经典中文字幕一区| 欧美在线短视频| 久久不见久久见免费视频1| 中文字幕在线视频一区| 91精品国产综合久久福利软件| 国产999精品久久久久久绿帽| 偷拍自拍另类欧美| 国产精品乱码妇女bbbb| 日韩欧美国产三级电影视频| 日本韩国视频一区二区| 国产成人av网站| 奇米一区二区三区| 一区二区三区免费在线观看| 国产日韩高清在线| 欧美一区二区三区在线电影| 色婷婷激情综合| 成人性生交大片免费看中文网站| 日韩精品午夜视频| 亚洲欧美二区三区| 国产片一区二区三区| 日韩天堂在线观看| 欧美婷婷六月丁香综合色| 成人午夜免费电影| 久久99国产精品免费网站| 亚洲国产精品视频| 一区二区三区四区在线| 中文字幕一区二区三区精华液 | 99精品国产99久久久久久白柏| 美国毛片一区二区三区| 日本怡春院一区二区| 亚洲成人久久影院| 一级中文字幕一区二区| 亚洲日本va午夜在线影院| 中文乱码免费一区二区| 国产清纯美女被跳蛋高潮一区二区久久w| 日韩欧美三级在线| 91麻豆精品国产91久久久久久| 在线精品亚洲一区二区不卡| 在线精品国精品国产尤物884a | 日韩精品一区二区三区在线观看| 91福利精品第一导航| 在线免费观看日本一区| 在线观看中文字幕不卡| 在线观看一区日韩| 欧美午夜精品理论片a级按摩| 91麻豆精东视频| 色猫猫国产区一区二在线视频| 色欧美日韩亚洲| 在线观看日韩高清av| 欧美日韩一区不卡| 欧美日韩高清一区| 91精品久久久久久久91蜜桃| 日韩午夜三级在线| 日韩免费看的电影| 国产日韩欧美高清在线| 国产精品短视频| 亚洲欧美激情视频在线观看一区二区三区| 一区二区激情小说| 日韩在线观看一区二区| 美女免费视频一区二区| 精东粉嫩av免费一区二区三区| 国产精品亚洲成人| 色伊人久久综合中文字幕| 欧美日本一区二区| 日韩免费高清视频| 国产精品视频一区二区三区不卡| 亚洲同性gay激情无套| 亚洲国产视频在线| 久久99九九99精品| 北条麻妃国产九九精品视频| 欧美在线一区二区| 日韩一区二区电影在线| 国产视频视频一区| 亚洲区小说区图片区qvod| 亚洲午夜精品网| 激情小说欧美图片| 99国产精品视频免费观看| 91高清视频免费看| 日韩欧美国产精品一区| 国产精品成人一区二区三区夜夜夜| 一区二区三区不卡视频| 久久aⅴ国产欧美74aaa| 99国产一区二区三精品乱码| 91精品国产综合久久蜜臀| 久久久久国产精品厨房| 亚洲成人免费影院| 高清成人在线观看| 欧美日韩精品一区视频| 国产精品美女视频| 免播放器亚洲一区| 97精品久久久久中文字幕| 538在线一区二区精品国产| 国产性色一区二区| 亚洲成av人片在线观看| 福利电影一区二区三区| 欧美二区在线观看| 国产女人18毛片水真多成人如厕| 天天影视色香欲综合网老头| av一区二区三区四区| 欧美大白屁股肥臀xxxxxx| 亚洲一区二区视频在线观看| 高清在线观看日韩| 欧美成人video| 性久久久久久久久| 色一情一伦一子一伦一区| 国产丝袜在线精品| 久久疯狂做爰流白浆xx| 欧美视频一区二| 中文字幕在线观看一区二区| 国产精品一卡二卡在线观看| 5566中文字幕一区二区电影| 一区二区三区中文在线观看| 成人午夜精品在线| 日韩精品一区二区三区在线观看| 图片区小说区国产精品视频| 色爱区综合激月婷婷| 国产精品的网站| 国产精品18久久久久久久久久久久 | 蜜臀久久久久久久| 欧美日韩视频专区在线播放| 亚洲欧美自拍偷拍色图| 成人综合在线网站| 久久综合九色综合97_久久久| 日韩不卡手机在线v区| 在线看一区二区| 亚洲欧美偷拍另类a∨色屁股| 国产999精品久久| 久久久精品蜜桃| 国产精品一区二区三区乱码| 欧美成人一区二区三区在线观看 | 天天色天天爱天天射综合| 在线中文字幕一区| 亚洲一区二区精品视频| 91黄色激情网站| 亚洲激情自拍偷拍| 色域天天综合网| 亚洲一区二区欧美日韩| 欧美三级中文字幕| 午夜影视日本亚洲欧洲精品| 欧美群妇大交群中文字幕| 亚洲国产欧美在线人成| 欧美日韩中文字幕精品| 午夜婷婷国产麻豆精品| 欧美久久婷婷综合色| 天天色天天爱天天射综合| 日韩欧美亚洲另类制服综合在线| 日韩成人一区二区| 精品国产伦一区二区三区观看方式 | 精品国产伦一区二区三区观看方式 | 精品一区二区免费视频| 欧美成人官网二区| 国产麻豆一精品一av一免费| 亚洲国产精品av| 色香蕉成人二区免费| 五月婷婷另类国产| 欧美一级二级三级蜜桃| 激情都市一区二区| 日本一区二区三区国色天香| 不卡免费追剧大全电视剧网站| 亚洲天堂精品在线观看| 欧美综合一区二区| 日韩精品免费专区| 久久精品网站免费观看| 制服丝袜亚洲播放| 日本欧洲一区二区| 久久久久久久综合色一本| 成人av网址在线观看| 亚洲一区欧美一区| 日韩色在线观看| 成人毛片在线观看| 一区二区三区在线观看网站| 欧美一区二区三区免费在线看 | 一区二区三区不卡在线观看 | 欧洲av一区二区嗯嗯嗯啊| 久久精品噜噜噜成人av农村| 2020国产精品| 色综合天天综合网国产成人综合天 | 7777精品伊人久久久大香线蕉的 | 国产精品久久久久毛片软件| 在线观看免费成人| 久久国产尿小便嘘嘘| 亚洲手机成人高清视频| 欧美精品九九99久久| 国产成人小视频| 亚洲一区二区3| 国产清纯美女被跳蛋高潮一区二区久久w| 一本一道波多野结衣一区二区| 麻豆一区二区三区| 亚洲日本韩国一区| 欧美成人三级在线| 在线亚洲一区二区| 国产传媒日韩欧美成人| 午夜免费欧美电影| 欧美激情综合在线| 欧美一区二区高清| 91国在线观看| eeuss鲁片一区二区三区在线看| 日本少妇一区二区| 亚洲国产精品久久艾草纯爱|