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

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

?? ss_region.c

?? 中國石油二期加油站IC系統(tǒng)后臺通訊軟件
?? C
字號:

/* header include files (.h) */

#include "envopt.h"        /* environment options */
#include "envdep.h"        /* environment dependent */
#include "envind.h"        /* environment independent */

#include "gen.h"           /* general layer */
#include "ssi.h"           /* system services */

#include "ss_err.h"        /* errors */
#include "ss_dep.h"        /* implementation-specific */
#include "ss_queue.h"      /* queues */
#include "ss_task.h"       /* tasking */
#include "ss_strm.h"       /* STREAMS */
#include "ss_msg.h"        /* messaging */
#include "ss_mem.h"        /* memory management interface */
#include "ss_gen.h"        /* general */
#include "cm_mem.h"


/* header/extern include files (.x) */

#include "gen.x"           /* general layer */
#include "ssi.x"           /* system services */

#include "ss_dep.x"        /* implementation-specific */
#include "ss_queue.x"      /* queues */
#include "ss_task.x"       /* tasking */
#include "ss_timer.x"      /* timers */
#include "ss_strm.x"       /* STREAMS */
#include "ss_msg.x"        /* messaging */
#include "ss_mem.x"        /* memory management interface */
#include "ss_drvr.x"       /* driver tasks */
#include "ss_gen.x"        /* general */
#include "cm_mem.x"


#include "ss_region.x"     /* region control */
#include "stdlib.h"




PUBLIC RegionCb_s regionCb;


PUBLIC Cntr cfgNumRegs = SS_MAX_REGS;

PUBLIC SsRegCfg cfgRegInfo[SS_MAX_REGS];


/***********************************************************************************
* Function Name           : SInitRegion
* Input Parameters        : 
* Output Parameters       :
* Return value            :
* Global Variable Accessed:
* Global Variable Modified:
* Extern Call Functions   :
* Description             :
* Modification            :
************************************************************************************/
S16 SInitRegion(void)
{
    U32 i, j;

    if (ROK != SInitLock(&regionCb.mutex, 0))
    {
        SSLOGERROR( ERRCLS_DEBUG, ESS001, 87, "Invalid value" );
        RETVALUE(RFAILED);
    }


    for (i = 0; i < SS_MAX_REGS; i++)
    {
        cfgRegInfo[i].region = i;
        cfgRegInfo[i].numPools = SS_MAX_POOLS_PER_REG - 1;
        for (j = 0; j < SS_MAX_POOLS_PER_REG - 1; j++)
        {
            cfgRegInfo[i].pools[j].size = POOL_SIZE;
            cfgRegInfo[i].pools[j].type = SS_POOL_DYNAMIC;
        }
        cfgRegInfo[i].pools[SS_MAX_POOLS_PER_REG - 1].size = 0;
        cfgRegInfo[i].pools[SS_MAX_POOLS_PER_REG - 1].type = SS_POOL_STATIC;

        regionCb.regionIdTbl[i].regionId = i;
        regionCb.regionIdTbl[i].used = FALSE;
        regionCb.regionIdTbl[i].regCb = NULLP;
    }
    RETVALUE(ROK);
}
/***********************************************************************************
* Function Name           : SGetRegId
* Input Parameters        : 
* Output Parameters       :
* Return value            :
* Global Variable Accessed:
* Global Variable Modified:
* Extern Call Functions   :
* Description             :
* Modification            :
************************************************************************************/
S16 SRegRegId(Ent ent, Inst inst, Region regId)
{
    S8 * name;

    SLock(&regionCb.mutex);

    if (regId >= SS_MAX_REGS)
    {
        SUnlock(&regionCb.mutex);
        SSLOGERROR( ERRCLS_DEBUG, ESS001, 87, "Invalid value" );
        RETVALUE(RFAILED);
    }
    if (regionCb.regionIdTbl[regId].used == TRUE)
    {
        SUnlock(&regionCb.mutex);
        SSLOGERROR( ERRCLS_DEBUG, ESS001, 87, "Invalid value" );
        RETVALUE(RFAILED);
    }

    if (ROK != ssGetEntName(ent, &name))
    {
        SUnlock(&regionCb.mutex);
        SSLOGERROR( ERRCLS_DEBUG, ESS001, 87, "Invalid value" );
        RETVALUE(RFAILED);
    }

    regionCb.regionIdTbl[regId].ent = ent;
    regionCb.regionIdTbl[regId].inst = inst;


    regionCb.regionIdTbl[regId].used = TRUE;
    SUnlock(&regionCb.mutex);
    RETVALUE(ROK);
}
/***********************************************************************************
* Function Name           : SFreeRegId
* Input Parameters        : 
* Output Parameters       :
* Return value            :
* Global Variable Accessed:
* Global Variable Modified:
* Extern Call Functions   :
* Description             :
* Modification            :
************************************************************************************/
S16 SDeregRegId(Region region)
{
    if (region >= SS_MAX_REGS )
    {
        SSLOGERROR( ERRCLS_DEBUG, ESS001, 87, "Invalid value" );
        RETVALUE(RFAILED);
    }
    SLock(&regionCb.mutex);

    regionCb.regionIdTbl[region].used = FALSE;
    regionCb.regionIdTbl[region].regCb = NULLP;
    SUnlock(&regionCb.mutex);
    RETVALUE(ROK);
}


/***********************************************************************************
* Function Name           : SCreateRegion
* Input Parameters        : 
* Output Parameters       :
* Return value            :
* Global Variable Accessed:
* Global Variable Modified:
* Extern Call Functions   :
* Description             :
* Modification            :
************************************************************************************/
S16 SCreateRegion(Ent ent, Inst inst, Region regId, RegionCfg_s * cfg, U16 numBlock)
{
    CmMmRegCb * RegCb;
    U32 regionSize = 0;
    U32 Cnt;

    TRC0(SCreateRegion);

    if (NULLP == cfg)
    {
        SSLOGERROR( ERRCLS_DEBUG, ESS001, 87, "Invalid value" );
        RETVALUE(RFAILED);
    }
    if ( 0 == numBlock || CMM_MAX_BKT_ENT < numBlock )
    {
        SSLOGERROR( ERRCLS_DEBUG, ESS001, 87, "Invalid value" );
        RETVALUE(RFAILED);
    }

    if (regId >= SS_MAX_REGS)
    {
        SSLOGERROR( ERRCLS_DEBUG, ESS001, 87, "Invalid value" );
        RETVALUE(RFAILED);
    }

    if (RFAILED == SRegRegId(ent, inst, regId))
    {
        SSLOGERROR( ERRCLS_DEBUG, ESS001, 87, "can not get region" );
        RETVALUE(RFAILED);
    }

    #ifdef AMOS
    RegCb = (CmMmRegCb *)MALLOC(sizeof(CmMmRegCb));
    #else
    RegCb = (CmMmRegCb *)calloc(1, sizeof(CmMmRegCb));
    #endif
    if (NULLP == RegCb)
    {
        SDeregRegId(regId);
        RETVALUE(RFAILED);
    }
    for (Cnt = 0;Cnt < numBlock; Cnt++)
    {
        regionSize += cfg[Cnt].bktSize * cfg[Cnt].numBlks + cfg[Cnt].heapSize;
    }
    #ifdef AMOS
    regionCb.regionIdTbl[regId].regCfg.vAddr = (Data *)MALLOC(regionSize * sizeof(Data));
    #else
    regionCb.regionIdTbl[regId].regCfg.vAddr = (Data *)calloc(regionSize, sizeof(Data));
    #endif
    if (regionCb.regionIdTbl[regId].regCfg.vAddr == NULLP)
    {
        SDeregRegId(regId);
        free(RegCb);
        SSLOGERROR( ERRCLS_DEBUG, ESS001, 87, "Invalid value" );
        RETVALUE(RFAILED);
    }

    /* set up the CMM configuration structure */
    regionCb.regionIdTbl[regId].regCfg.size = regionSize;
    regionCb.regionIdTbl[regId].regCfg.lType = SS_LOCK_MUTEX;
    regionCb.regionIdTbl[regId].regCfg.chFlag = DFLT_REG_FLAG;
    regionCb.regionIdTbl[regId].regCfg.bktQnSize = 16;
    regionCb.regionIdTbl[regId].regCfg.numBkts = numBlock;

    for (Cnt = 0; Cnt < numBlock; Cnt ++)
    {
        regionCb.regionIdTbl[regId].regCfg.bktCfg[Cnt].size = cfg[Cnt].bktSize;
        regionCb.regionIdTbl[regId].regCfg.bktCfg[Cnt].numBlks = cfg[Cnt].numBlks;
    }
    if (cmMmRegInit(regId, RegCb, &regionCb.regionIdTbl[regId].regCfg) != ROK)
    {
        SDeregRegId(regId);
        free(regionCb.regionIdTbl[regId].regCfg.vAddr);
        free(RegCb);
        SSLOGERROR( ERRCLS_DEBUG, ESS001, 87, "Invalid value" );
        RETVALUE(RFAILED);
    }
    SLock(&regionCb.mutex);
    regionCb.regionIdTbl[regId].regCb = RegCb;
    SUnlock(&regionCb.mutex);

    RETVALUE(OK);
}

S16 SDelRegion(Region regId)
{
    if (regId == SS_DFLT_REGION || regId >= SS_MAX_REGS)
    {
        SSLOGERROR( ERRCLS_DEBUG, ESS001, 87, "Invalid value" );
        RETVALUE(RFAILED);
    }
    SLock(&regionCb.mutex);
    if (regionCb.regionIdTbl[regId].used == FALSE)
    {
        SUnlock(&regionCb.mutex);
        SSLOGERROR( ERRCLS_DEBUG, ESS001, 87, "Invalid value" );
        RETVALUE(RFAILED);
    }

    cmMmRegDeInit(regionCb.regionIdTbl[regId].regCb);
    #ifdef AMOS
    FREE(regionCb.regionIdTbl[regId].regCfg.vAddr);
    FREE(regionCb.regionIdTbl[regId].regCb);
    #else
    free(regionCb.regionIdTbl[regId].regCfg.vAddr);
    free(regionCb.regionIdTbl[regId].regCb);
    #endif

    SDeregRegId(regId);
    SUnlock(&regionCb.mutex);
    RETVALUE(ROK);
}





/***********************************************************************************
* Function Name           : SRegShow
* Input Parameters        : 
* Output Parameters       :
* Return value            :
* Global Variable Accessed:
* Global Variable Modified:
* Extern Call Functions   :
* Description             :
* Modification            :
************************************************************************************/


S16 SRegShow(Region region, Pool pool)
{
    S16 ret;
    SMemCtl mctl;


    TRC1(SChkRes);


#if (ERRCLASS & ERRCLS_INT_PAR)

    /* validate region ID */
    if (region >= SS_MAX_REGS)
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS362, region, "Invalid region");
        RETVALUE(RFAILED);
    }

    /* validate pool ID */
    if (pool >= SS_MAX_POOLS_PER_REG)
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS363, region, "Invalid pool");
        RETVALUE(RFAILED);
    }

#endif

    /* acquire one semaphore, to protect against deregistration */
    SS_ACQUIRE_SEMA(&osCp.regionTblSem, ret);
    if (ret != ROK)
    {

#if (ERRCLASS & ERRCLS_DEBUG)
        SSLOGERROR(ERRCLS_DEBUG, ESS365, (ErrVal) ret,
                   "Could not lock region table");
#endif

        RETVALUE(RFAILED);
    }


#if (ERRCLASS & ERRCLS_INT_PAR)
    /* verify that this region is around */
    if (osCp.regionTbl[region].used == FALSE)
    {
        SS_RELEASE_SEMA(&osCp.regionTblSem);

        SSLOGERROR(ERRCLS_INT_PAR, ESS366, region, "Region not registered");
        RETVALUE(RFAILED);
    }

    /* verify that this is a valid pool */
    if (osCp.regionTbl[region].poolTbl[pool].type != SS_POOL_DYNAMIC)
    {
        SSLOGERROR(ERRCLS_DEBUG, ESS367, ERRZERO, "Invalid pool");
        RETVALUE(RFAILED);
    }
#endif


    /* call the memory manager to check resources */
    mctl.op = SS_MEM_SHOW;
    ret = (osCp.regionTbl[region].ctl)
          (osCp.regionTbl[region].regCb, SS_MEM_SHOW, &mctl);

    /* release the semaphore we took */
    SS_RELEASE_SEMA(&osCp.regionTblSem);


    RETVALUE(ret);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人av免费| 国产欧美精品一区二区三区四区| 最近日韩中文字幕| jizzjizzjizz欧美| 国产在线精品视频| 久久天堂av综合合色蜜桃网| 国产乱人伦偷精品视频免下载| 国产日韩欧美精品综合| 成人污视频在线观看| 亚洲欧美综合色| 欧美自拍丝袜亚洲| 青青草97国产精品免费观看 | 亚洲一区二区在线视频| 欧美中文字幕亚洲一区二区va在线| 亚洲国产成人av网| 精品盗摄一区二区三区| 国产精品一级二级三级| 中文字幕亚洲一区二区va在线| 91国产丝袜在线播放| 免费av网站大全久久| 久久久久久久综合狠狠综合| 91免费国产视频网站| 日韩av中文字幕一区二区| 国产亚洲欧美日韩俺去了| 91视频精品在这里| 蜜桃久久av一区| 国产精品全国免费观看高清 | 亚洲区小说区图片区qvod| 欧美性猛片aaaaaaa做受| 麻豆国产精品官网| 亚洲欧美偷拍三级| 欧美一区二区美女| 99riav久久精品riav| 爽好多水快深点欧美视频| 欧美国产在线观看| 欧美电影在哪看比较好| 国产aⅴ综合色| 日韩电影在线观看一区| 中文字幕一区二区三区色视频| 欧美一区二区视频在线观看2022| 日韩精品专区在线影院重磅| 99热在这里有精品免费| 九九在线精品视频| 一片黄亚洲嫩模| 久久久久久久电影| 91精品国产色综合久久ai换脸| 不卡在线观看av| 经典一区二区三区| 日韩影院免费视频| 综合自拍亚洲综合图不卡区| 久久久久国产成人精品亚洲午夜| 欧美日韩国产乱码电影| k8久久久一区二区三区 | 91精品国产色综合久久ai换脸 | 欧美激情一区三区| 欧美一级日韩不卡播放免费| 91麻豆视频网站| 国产精品一区二区x88av| 日韩av一区二区在线影视| 亚洲综合在线免费观看| 中文字幕色av一区二区三区| 国产嫩草影院久久久久| 精品成人免费观看| 欧美一区二区三区免费大片| 欧美私人免费视频| 色悠久久久久综合欧美99| 国产精品一二三四| 国产真实乱偷精品视频免| 久久精品国产网站| 麻豆视频观看网址久久| 日韩av网站在线观看| 亚洲一区二区三区中文字幕在线| 亚洲精品免费看| 国产精品二区一区二区aⅴ污介绍| 久久综合99re88久久爱| 精品国产免费人成在线观看| 日韩欧美一二三| 日韩欧美一二区| 精品国精品国产| 久久精品欧美一区二区三区麻豆| 国产日韩欧美制服另类| 国产精品盗摄一区二区三区| 国产精品女人毛片| 国产精品美女久久久久久久| 亚洲欧洲一区二区在线播放| 亚洲色图20p| 亚洲综合丝袜美腿| 日韩高清一级片| 久久精品99国产精品日本| 久久狠狠亚洲综合| 国产一区二区在线看| 国产麻豆成人传媒免费观看| 成人一区二区三区在线观看| av网站免费线看精品| 色哟哟国产精品免费观看| 日本一区二区三区在线观看| 国产偷国产偷精品高清尤物 | 一区二区三区在线播放| 一区二区高清在线| 日韩国产欧美在线视频| 久久精品国产精品青草| 国产精品资源网| bt7086福利一区国产| 色婷婷av一区二区三区软件| 欧美中文字幕亚洲一区二区va在线| 欧美猛男男办公室激情| 2020国产成人综合网| 国产精品系列在线| 亚洲v精品v日韩v欧美v专区| 另类欧美日韩国产在线| 丁香婷婷综合激情五月色| 色婷婷精品久久二区二区蜜臀av | 日本久久一区二区三区| 欧美蜜桃一区二区三区| 久久久不卡网国产精品二区| 亚洲色图丝袜美腿| 久久草av在线| 91激情在线视频| 欧美精品一区二区蜜臀亚洲| 一区二区三区资源| 国产一区激情在线| 在线精品国精品国产尤物884a| 欧美精品一区二区三区蜜桃| 一区二区三区中文字幕电影| 热久久国产精品| 97se亚洲国产综合自在线不卡| 欧美男男青年gay1069videost| 中文字幕第一区| 蜜臀精品久久久久久蜜臀 | 成人av在线影院| 91精品国产欧美一区二区18| 国产精品对白交换视频| 紧缚捆绑精品一区二区| 欧美日韩一区小说| 国产色一区二区| 日本亚洲电影天堂| 色婷婷亚洲综合| 国产精品你懂的在线| 国内精品免费**视频| 欧美情侣在线播放| 亚洲综合av网| 不卡影院免费观看| 久久久久久久性| 免费成人美女在线观看| 欧美日韩一区不卡| 亚洲精选视频免费看| 国产精品一区专区| 91精品免费在线观看| 亚洲在线免费播放| 91美女片黄在线观看| 国产三级精品三级| 国产精品18久久久久久久久久久久| 欧美日韩视频第一区| 亚洲精品一二三区| 成人一区在线看| 国产日本欧洲亚洲| 黄色精品一二区| 精品国产凹凸成av人网站| 捆绑调教美女网站视频一区| 在线不卡欧美精品一区二区三区| 亚洲一区二区精品久久av| 91丝袜国产在线播放| 中文字幕五月欧美| 91在线观看一区二区| 中文字幕成人在线观看| 91精品欧美久久久久久动漫 | 精品88久久久久88久久久| 青青青爽久久午夜综合久久午夜| 色成年激情久久综合| 18成人在线视频| 91免费在线看| 亚洲专区一二三| 欧美日韩精品福利| 午夜精品福利一区二区三区av| 欧洲色大大久久| 性做久久久久久| 欧美一级二级三级蜜桃| 久久精品国产网站| 2023国产精品| av成人免费在线观看| 亚洲男人的天堂一区二区 | 国产经典欧美精品| 欧美国产日韩精品免费观看| 成人a级免费电影| 一区二区三区四区国产精品| 91成人国产精品| 日本在线不卡一区| 精品国产乱码久久久久久久久| 国产自产视频一区二区三区| 国产精品色在线| 91国产成人在线| 日韩黄色片在线观看| 精品sm捆绑视频| 91在线云播放| 五月婷婷激情综合| 久久精品视频网| 欧美亚洲丝袜传媒另类| 麻豆中文一区二区| 亚洲日本中文字幕区| 制服丝袜成人动漫|