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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sem.c

?? Rabbit 32Bit RTOS源代碼
?? C
字號:
/*********************************************************************
*                   Copyright (c) 2011-2012,李士偉
*                     All rights reserved.
*文 件 名:sem.c
*描    述:信號量操作源文件
*當(dāng)前版本:V1.00
*作    者:李士偉
*創(chuàng)建日期:2011.12.30
**********************************************************************/
#include <kernel\sem.h>
#include <kernel\flag.h>
#include <kernel\sched.h>
#include <kernel\kd.h>
#include <kernel\asm.h>

/*********************************************************************
*函 數(shù) 名:API_InitSem
*描    述:初始化信號量
*輸入?yún)?shù):pSem: 信號量結(jié)構(gòu)體指針
*          SemCnt: 信號量值
*輸出參數(shù):無
*返 回 值:無
*注    意:
**********************************************************************/
void API_InitSem(OS_SEM *pSem, INT32U SemCnt)
{
    if (pSem == NULL)
    {
        return ;
    }

    OS_ENTER_CRITICAL();
    pSem->SemCnt    = SemCnt;
    pSem->WaitQ     = NULL;
    OS_EXIT_CRITICAL();
}

/*********************************************************************
*函 數(shù) 名:API_SemPend
*描    述:請求信號量
*輸入?yún)?shù):pSem: 信號量結(jié)構(gòu)體指針
*          timeout: 等待時限(單位:時鐘節(jié)拍),
*                   timeout ==0 直到有信號返回,
*                   timeout > 0 則在獲得信號時或等待時限到了返回
*輸出參數(shù):err: 等待錯誤信息
*               err == OS_ERR       等待的信號量對象不存在
*               err == OS_OVERTIME  等待時限到
*               err == OS_NO_ERR    獲得信號量
*返 回 值:OS_GET_SEM 獲得信號量,OS_NO_SEM 未獲得信號量
*注    意:
**********************************************************************/
INT32U API_SemPend(OS_SEM *pSem, INT32U timeout, INT32U *err)
{
    if (pSem == NULL || OSIntNesting > 0 )
    {
        *err = OS_ERR;
        return OS_NO_SEM;
    }

    OS_ENTER_CRITICAL();

    if (pSem->SemCnt > 0) /* 獲得信號量 */
    {
        (pSem->SemCnt)--;
         OS_EXIT_CRITICAL();
        *err = OS_NO_ERR;
         return OS_GET_SEM;
    }

    /* 等待信號量 */
    OSTCBCur->Delay = timeout;   /* 設(shè)置等待時限 */
    
    for ( ; ; )  /* 循環(huán)查詢信號量,防止其它任務(wù)廣播發(fā)送信號量發(fā)生錯誤 */
    {
        OS_EnterWaitQHead(&(pSem->WaitQ), OSTCBCur);  /* 加入信號量的等待隊列 */
        OS_Sched();

        if (pSem->SemCnt > 0)  /* 獲得信號量 */
        {
           (pSem->SemCnt)--;
            OSTCBCur->Delay = 0;  /* 清除等待時限 */
            OS_EXIT_CRITICAL();
           *err = OS_NO_ERR;
            return OS_GET_SEM;
        }

        if ((timeout > 0) && (OSTCBCur->Delay == 0))
        {
            /* 等待時限到,未獲得信號量 */
            OS_EXIT_CRITICAL();
           *err = OS_OVERTIME;
            return OS_NO_SEM;
        }

        /* 未獲得信號量,并且等待時限未到,進入下一個等待循環(huán) */
    }
}

/*********************************************************************
*函 數(shù) 名:API_SemPost
*描    述:發(fā)送信號量
*輸入?yún)?shù):pSem: 信號量結(jié)構(gòu)指針
           AddSem:  信號量增加值
*輸出參數(shù):
*返 回 值: 
*注    意:pSem->SemCnt==1只喚醒一個等待的高優(yōu)先級任務(wù),
           pSem->SemCnt >1喚醒所有等待的任務(wù),
           至于任務(wù)最終是否獲得信號量,取決于它們的優(yōu)先級
**********************************************************************/
void API_SemPost(OS_SEM *pSem, INT32U AddSem)
{
    INT32U prio = 0;
    OS_TCB *ptcb;
    OS_TCB *wptcb;

    OS_ENTER_CRITICAL();

    if (pSem == NULL )
    {
        OS_EXIT_CRITICAL();
        return ;
    }

    pSem->SemCnt += AddSem ;
    ptcb  = pSem->WaitQ;
    wptcb = ptcb;

    if (ptcb != NULL)  /* 有任務(wù)等待信號量 */
    {
        prio = ptcb->Prio;
    }
    else  /* 沒有任務(wù)等待信號量,返回 */
    {
        OS_EXIT_CRITICAL();
        return ;
    }

    /* 喚醒等待信號量的任務(wù) */
    if (pSem->SemCnt == 1)  /* 基于優(yōu)先級喚醒一個等待該信號量的高優(yōu)先級任務(wù) */
    {
        while (ptcb != NULL)  /* 從等待隊列查詢一個高優(yōu)先級任務(wù) */
        {
            if (prio < ptcb->Prio)
            {
                prio = ptcb->Prio;
                wptcb= ptcb;
            }
            ptcb = ptcb->QNext;
        }

        OS_EnterRunQ(wptcb);  /* 加入運行隊列 */

    }
    else if (pSem->SemCnt > 1)  /* 廣播方式喚醒所有等待該信號量的任務(wù) */
    {
        while (ptcb != NULL)
        {
            wptcb = ptcb->QNext;
            OS_EnterRunQ(ptcb);  /* 加入運行隊列 */
            ptcb = wptcb;
        }
    }

    OS_EXIT_CRITICAL();
    OS_Sched();

}

/*********************************************************************
*函 數(shù) 名:API_SemAccept
*描    述:無等待獲取信號量
*輸入?yún)?shù):pSem: 信號量結(jié)構(gòu)體指針
*輸出參數(shù):無
*返 回 值:1,獲取了信號量,0,未獲得信號量
*注    意:
**********************************************************************/
INT32U API_SemAccept(OS_SEM *pSem)
{
    OS_ENTER_CRITICAL();
    if (pSem->SemCnt > 0)
    {
        (pSem->SemCnt)--;
        OS_EXIT_CRITICAL();
        return 1;
    }
    OS_EXIT_CRITICAL();

    return 0;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕第一区综合| 欧美日韩电影在线播放| 国产欧美精品一区| 国产精品白丝jk黑袜喷水| 久久久久高清精品| 99re6这里只有精品视频在线观看| 国产精品高潮呻吟| 在线观看视频欧美| 麻豆一区二区99久久久久| 久久综合九色综合97_久久久| 国产一区二区不卡| 亚洲欧美电影一区二区| 欧美精品日韩一本| 国内欧美视频一区二区| 国产精品免费视频网站| 欧美日韩不卡一区| 国产精品18久久久久久久久| 亚洲精品视频在线观看网站| 日韩免费在线观看| 成人app网站| 首页国产欧美日韩丝袜| 日本一区二区三区国色天香| 欧美亚一区二区| 国产一区二区三区免费观看| 一区二区三区在线观看视频| 精品久久一二三区| 99久久精品国产网站| 蜜乳av一区二区| 中文字幕在线观看一区| 日韩一区二区三区在线观看| 99综合电影在线视频| 日韩一区精品字幕| 亚洲啪啪综合av一区二区三区| 91精品国产91久久久久久一区二区| 国产激情视频一区二区在线观看 | 久久精品久久精品| 国产精品国产成人国产三级| 欧美一区二区视频网站| 日本韩国欧美在线| 国产精品99久久久久久似苏梦涵| 亚洲国产精品精华液网站| 国产日本欧美一区二区| 91麻豆精品国产无毒不卡在线观看| 成人av网址在线| 韩国精品主播一区二区在线观看 | 久久久久久亚洲综合影院红桃| 日本韩国欧美国产| 国产福利一区二区三区| 免费观看一级特黄欧美大片| 亚洲色欲色欲www在线观看| 久久久久久久久免费| 欧美一级在线观看| 欧美日韩国产首页| 欧洲视频一区二区| 91在线视频网址| 成人一道本在线| 国产一区二区三区免费看 | 国产曰批免费观看久久久| 亚洲国产日日夜夜| 亚洲精选视频免费看| 国产亚洲欧美一区在线观看| 日韩欧美高清在线| 制服丝袜一区二区三区| 欧美日韩一级二级| 欧美视频在线一区二区三区 | 免费成人结看片| 午夜视频一区在线观看| 亚洲激情图片小说视频| 中文字幕一区二区三区在线不卡 | 久久一夜天堂av一区二区三区| 欧美日韩aaaaa| 8x8x8国产精品| 欧美久久免费观看| 在线不卡中文字幕播放| 欧美精品亚洲一区二区在线播放| 欧美午夜在线一二页| 欧美日韩国产一区二区三区地区| 欧美日韩另类一区| 欧美久久久久久蜜桃| 7777精品伊人久久久大香线蕉最新版| 欧美亚州韩日在线看免费版国语版| 91福利在线观看| 欧美日韩午夜精品| 在线成人高清不卡| 精品少妇一区二区三区视频免付费 | 成人av先锋影音| 不卡视频在线观看| 91视频在线看| 欧美在线免费播放| 69精品人人人人| 精品国产自在久精品国产| 国产日本亚洲高清| 亚洲精品国产无套在线观| 亚洲第一精品在线| 久久99久久精品| 东方aⅴ免费观看久久av| 9i看片成人免费高清| 欧美午夜在线一二页| 日韩欧美一区二区久久婷婷| 精品国产欧美一区二区| 国产欧美一区二区三区沐欲| 亚洲欧洲成人精品av97| 亚洲福利一区二区三区| 韩国女主播成人在线| 91在线观看高清| 制服丝袜av成人在线看| 国产日韩影视精品| 一级做a爱片久久| 美女国产一区二区三区| caoporn国产精品| 欧美一级久久久| 亚洲欧美一区二区视频| 日韩中文字幕区一区有砖一区| 激情久久五月天| 色婷婷国产精品综合在线观看| 91精品欧美一区二区三区综合在 | 免费观看日韩电影| 成人国产精品免费观看动漫| 欧美人狂配大交3d怪物一区| 久久夜色精品一区| 亚洲一区二区欧美| 国产综合久久久久久久久久久久| 色婷婷综合五月| 久久久久久久综合日本| 一区二区免费视频| 高清成人在线观看| 日韩午夜电影在线观看| 亚洲精品高清在线观看| 九九精品一区二区| 欧美日韩一区二区欧美激情| 国产精品欧美一区二区三区| 奇米色777欧美一区二区| 91蝌蚪porny| 欧美极品xxx| 久久精品国产一区二区三区免费看| 99视频精品在线| 久久婷婷国产综合精品青草| 调教+趴+乳夹+国产+精品| 不卡电影免费在线播放一区| 精品久久五月天| 蜜桃视频一区二区三区| 欧美少妇性性性| 亚洲免费伊人电影| av电影天堂一区二区在线| 欧美电影免费观看高清完整版在| 亚洲一区av在线| 91麻豆精东视频| 亚洲欧洲性图库| 成人性色生活片| 久久久久久久久久久黄色| 蜜臀av一区二区三区| 精品1区2区3区| 亚洲成人免费在线观看| 一本大道久久a久久综合婷婷| 国产精品免费丝袜| 国产69精品久久99不卡| 久久蜜桃av一区二区天堂| 精品无码三级在线观看视频| 欧美成人a视频| 精品一区二区精品| 精品动漫一区二区三区在线观看| 日韩黄色免费电影| 欧美日韩国产综合久久| 婷婷综合在线观看| 91精品国产色综合久久| 美女任你摸久久| 26uuu精品一区二区| 国产一区二区美女诱惑| 国产日韩精品一区| 成人黄色777网| 国产人成亚洲第一网站在线播放| 国产99久久久久久免费看农村| 久久精品欧美一区二区三区麻豆| 九九九久久久精品| 国产午夜精品美女毛片视频| 国产·精品毛片| 亚洲柠檬福利资源导航| 欧美亚洲动漫精品| 欧美aaaaa成人免费观看视频| 日韩美一区二区三区| 国产精品一二三区在线| 国产精品久久看| 欧洲人成人精品| 免费成人性网站| 中文字幕av不卡| 日韩欧美国产高清| 成人黄页毛片网站| 亚洲午夜羞羞片| 欧美v日韩v国产v| 成人18精品视频| 亚洲.国产.中文慕字在线| 日韩午夜激情电影| 成人不卡免费av| 亚洲国产成人av网| 亚洲精品在线一区二区| 91在线码无精品| 日本人妖一区二区| 中文字幕欧美日本乱码一线二线 | jlzzjlzz欧美大全| 亚洲成人精品一区二区|