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

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

?? ss_mem.c

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


/********************************************************************20**

     Name:     System Services -- Memory management interface

     Type:     C source file

     Desc:     Implementation of the memory management interface.

     File:     ss_mem.c

     Sid:      ss_mem.c 1.2  -  08/11/98 10:47:01

     Prg:      kp

*********************************************************************21*/


/* 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_msg.h"        /* messaging */
#include "ss_mem.h"        /* memory management interface */
#include "ss_gen.h"        /* general */



/* 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 */



/*
*     Interface functions
*/


/*
*
*       Fun:   SRegRegion
*
*       Desc:  Registers a memory region.
*
*       Ret:   ROK      - ok
*              RFAILED  - failed, general (optional)
*
*       Notes:
*
*       File:  ss_mem.c
*
*/
#ifdef ANSI
PUBLIC S16 SRegRegion
(
Region region,                  /* region ID */
SRegInfo *regInfo               /* information about the region */
)
#else
PUBLIC S16 SRegRegion(region, regInfo)
Region region;                  /* region ID */
SRegInfo *regInfo;              /* information about the region */
#endif
{
    S16 ret;


    TRC1(SRegRegion);


#if (ERRCLASS & ERRCLS_INT_PAR)

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

    /* validate region info pointer */
    if (regInfo == NULLP)
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS204, ERRZERO, "Null pointer");
        RETVALUE(RFAILED);
    }
#endif


    /* lock the region table */
    SS_ACQUIRE_SEMA(&osCp.regionTblSem, ret);
    if (ret != ROK)
    {

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

        RETVALUE(RFAILED);
    }


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

        SSLOGERROR(ERRCLS_INT_PAR, ESS206, ERRZERO, "Region ID used");
        RETVALUE(RFAILED);
    }
#endif


    /* fill in the region information */
    osCp.regionTbl[region].used = TRUE;
    osCp.regionTbl[region].regCb = regInfo->regCb;
    osCp.regionTbl[region].flags = regInfo->flags;
    osCp.regionTbl[region].start = regInfo->start;
    osCp.regionTbl[region].size = regInfo->size;
    osCp.regionTbl[region].alloc = regInfo->alloc;
    osCp.regionTbl[region].free = regInfo->free;
    osCp.regionTbl[region].ctl = regInfo->ctl;

    osCp.numRegions++;


    /* unlock the region table */
    SS_RELEASE_SEMA(&osCp.regionTblSem);


    RETVALUE(ROK);
}


/*
*
*       Fun:   SDeregRegion
*
*       Desc:  Deregisters a memory region.
*
*       Ret:   ROK      - ok
*              RFAILED  - failed, general (optional)
*
*       Notes:
*
*       File:  ss_mem.c
*
*/
#ifdef ANSI
PUBLIC S16 SDeregRegion
(
Region region                   /* region ID */
)
#else
PUBLIC S16 SDeregRegion(region)
Region region;                  /* region ID */
#endif
{
    S16 ret;


    TRC1(SDeregRegion);


#if (ERRCLASS & ERRCLS_INT_PAR)

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


    /* lock the region table */
    SS_ACQUIRE_SEMA(&osCp.regionTblSem, ret);
    if (ret != ROK)
    {

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

        RETVALUE(RFAILED);
    }


#if (ERRCLASS & ERRCLS_INT_PAR)
    /* check if this region is registered */
    if (osCp.regionTbl[region].used == FALSE)
    {
        SS_RELEASE_SEMA(&osCp.regionTblSem);
        SSLOGERROR(ERRCLS_INT_PAR, ESS209, region, "Region not registered");
        RETVALUE(RFAILED);
    }
#endif


    /* empty the information about the region */
    osCp.regionTbl[region].used = FALSE;
    osCp.regionTbl[region].start = NULLP;
    osCp.regionTbl[region].size = 0;
    osCp.regionTbl[region].regCb = NULLP;
    osCp.regionTbl[region].flags = 0;
    osCp.regionTbl[region].alloc = NULLP;
    osCp.regionTbl[region].free = NULLP;
    osCp.regionTbl[region].ctl = NULLP;

    osCp.numRegions--;


    /* unlock the region table */
    SS_RELEASE_SEMA(&osCp.regionTblSem);


    RETVALUE(ROK);
}


/*
*
*       Fun:   SAlloc
*
*       Desc:  Allocates a block of memory of at least the specified
*              size.
*
*       Ret:   ROK      - ok
*              RFAILED  - failed, general (optional)
*
*       Notes:
*
*       File:  ss_mem.c
*
*/
#ifdef ANSI
PUBLIC S16 SAlloc
(
Region region,                  /* region ID */
Size *size,                     /* size of block required/allocated */
U32 flags,                      /* allocation flags */
Data **ptr                      /* filled with pointer to block */
)
#else
PUBLIC S16 SAlloc(region, size, flags, ptr)
Region region;                  /* region ID */
Size *size;                     /* size of block required/allocated */
U32 flags;                      /* allocation flags */
Data **ptr;                     /* filled with pointer to block */
#endif
{
    S16 ret;


    TRC1(SAlloc);


#if (ERRCLASS & ERRCLS_INT_PAR)

    /* validate region ID */
    if (region >= SS_MAX_REGS)
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS210, region, "Invalid region");
        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, ESS211, (ErrVal) ret,
                   "Could not lock region table");
#endif

        RETVALUE(RFAILED);
    }


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

        SSLOGERROR(ERRCLS_INT_PAR, ESS212, region, "Region not registered");
        RETVALUE(RFAILED);
    }
#endif


    /* call the memory manager, to allocate this memory */
    ret = (osCp.regionTbl[region].alloc)
          (osCp.regionTbl[region].regCb, size, flags, ptr);


    /* release the semaphore we took */
    SS_RELEASE_SEMA(&osCp.regionTblSem);
    if(ret != ROK)
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS212, osCp.regionTbl[region].regCb, "failed in alloc");
    }


    RETVALUE(ret);
}


/*
*
*       Fun:   SFree
*
*       Desc:  Frees a block of memory previously allocated by SAlloc().
*
*       Ret:   ROK      - ok
*              RFAILED  - failed, general (optional)
*
*       Notes:
*
*       File:  ss_mem.c
*
*/
#ifdef ANSI
PUBLIC S16 SFree
(
Region region,                  /* region ID */
Data *ptr,                      /* pointer to the allocated block */
Size size                       /* size of block */
)
#else
PUBLIC S16 SFree(region, ptr, size)
Region region;                  /* region ID */
Data *ptr;                      /* pointer to the allocated block */
Size size;                      /* size of block */
#endif
{
    S16 ret;


    TRC1(SFree);


#if (ERRCLASS & ERRCLS_INT_PAR)

    /* validate region ID */
    if (region >= SS_MAX_REGS)
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS213, region, "Invalid region");
        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, ESS214, (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, ESS215, region, "Region not registered");
        RETVALUE(RFAILED);
    }
#endif


    /* call the memory manager to free this memory */
    ret = (osCp.regionTbl[region].free)(osCp.regionTbl[region].regCb, ptr, size);


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


    RETVALUE(ret);
}



/********************************************************************30**
 
         End of file: ss_mem.c 1.2  -  08/11/98 10:47:01
 
*********************************************************************31*/


/********************************************************************40**
 
        Notes:
 
*********************************************************************41*/

/********************************************************************50**
 
*********************************************************************51*/


/********************************************************************60**
 
        Revision history:
 
*********************************************************************61*/

/********************************************************************90**
 
     ver       pat    init                  description
------------ -------- ---- ----------------------------------------------
1.1          ---      kp   1. initial release

1.2          ---      kp   1. cosmetic changes, error codes regenerated

*********************************************************************91*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区四区激情| 丁香激情综合国产| 日本二三区不卡| 国产日韩一级二级三级| 免费成人美女在线观看| 欧美日韩国产免费| 亚洲成人tv网| 欧美精品日韩精品| 亚洲成人av一区二区| 欧美性大战xxxxx久久久| 亚洲一区自拍偷拍| 欧美在线视频不卡| 亚洲电影视频在线| 欧美高清视频一二三区| 亚洲国产精品视频| 欧美一级片免费看| 麻豆精品一区二区综合av| 91精品国产色综合久久久蜜香臀| 性感美女久久精品| 精品三级在线看| 国产 欧美在线| 亚洲一区二区精品视频| 51精品秘密在线观看| 精品一二三四区| 日本一区二区成人在线| 在线观看亚洲a| 麻豆91免费观看| 日韩毛片视频在线看| 欧美日韩综合一区| 国产精品一二三四| 亚洲激情一二三区| 精品国产伦一区二区三区免费| 97精品超碰一区二区三区| 一区二区三区四区精品在线视频| 日韩欧美一区二区视频| 99国内精品久久| 久久精品久久综合| 亚洲欧美偷拍卡通变态| 久久婷婷国产综合国色天香| 色猫猫国产区一区二在线视频| 裸体一区二区三区| 天天av天天翘天天综合网| 国产日韩欧美一区二区三区乱码 | 亚洲国产日韩精品| 国产网红主播福利一区二区| 丝袜诱惑亚洲看片| 中文字幕av在线一区二区三区| 91麻豆精品91久久久久久清纯| 成人免费视频app| 精品中文字幕一区二区小辣椒| 亚洲最大成人综合| 亚洲另类在线视频| 中日韩av电影| 欧美激情自拍偷拍| 欧美国产国产综合| 日韩一区二区免费高清| 欧美高清性hdvideosex| 日本精品一区二区三区高清| 不卡视频免费播放| 91免费国产在线观看| a美女胸又www黄视频久久| 奇米888四色在线精品| 美国毛片一区二区| 国产精品一区二区91| 国产成人8x视频一区二区| 国产成人精品免费网站| 国产精品亚洲第一区在线暖暖韩国| 国产综合色产在线精品| 成人av综合在线| 欧美日韩美少妇| 精品国产乱码91久久久久久网站| 2024国产精品视频| 国产精品久久久久aaaa樱花| 久久免费电影网| 有坂深雪av一区二区精品| 青青草国产精品97视觉盛宴| 国产成人精品综合在线观看 | 精品国产免费人成在线观看| 日韩午夜激情av| 91精品欧美一区二区三区综合在| 欧美精品一级二级三级| 国产精品美女久久久久久久网站| 日韩高清一级片| 日本亚洲三级在线| av一二三不卡影片| 88在线观看91蜜桃国自产| 欧美国产日韩一二三区| 一区二区理论电影在线观看| 国产一区二区调教| 精品视频一区二区三区免费| 欧美激情一二三区| 麻豆精品视频在线观看免费| 99re成人在线| 欧美日韩亚州综合| 欧美国产一区二区| 亚洲色图在线播放| 亚洲一区二区欧美| 99在线精品免费| 日本一区免费视频| 国产成人av电影在线| 日韩亚洲欧美中文三级| 午夜欧美电影在线观看| 成人av小说网| 成人免费一区二区三区在线观看| 精品亚洲国产成人av制服丝袜| 欧美三级日韩在线| 午夜影院在线观看欧美| 欧美日韩精品二区第二页| 亚洲免费av高清| 日本精品视频一区二区| 国产精品女主播在线观看| 丁香桃色午夜亚洲一区二区三区| 精品久久久久久久久久久久久久久久久| 亚洲精品国久久99热| 色域天天综合网| 久久精品人人做人人综合 | a级精品国产片在线观看| 国产精品国产自产拍在线| 一本大道久久精品懂色aⅴ| 亚洲免费视频中文字幕| 91搞黄在线观看| 日本亚洲视频在线| 国产精品久久久久久久久免费樱桃| eeuss鲁一区二区三区| 蜜桃精品在线观看| 国产精品国产三级国产aⅴ入口 | 午夜在线成人av| 欧美精品一区二区三区久久久 | 日本韩国一区二区三区| 免费在线看成人av| 亚洲欧美在线视频观看| 7777精品伊人久久久大香线蕉| 精品一区二区在线观看| 欧美日韩小视频| 欧美日韩成人综合| 日韩高清一区在线| 久久网站热最新地址| 国产精品99久久久久久似苏梦涵 | 亚洲欧洲韩国日本视频| 欧美亚洲国产怡红院影院| 婷婷六月综合网| 国产精品一二二区| 欧美一区二区在线播放| 国产精品不卡在线观看| 精品一区二区av| 在线成人小视频| 久久精品噜噜噜成人av农村| 91浏览器打开| 精品日韩av一区二区| 亚洲午夜久久久久久久久久久| 欧美一级高清大全免费观看| 成人深夜在线观看| 日韩精品一级二级| 久久精品亚洲麻豆av一区二区| 99精品桃花视频在线观看| 亚洲男同性视频| 欧美一区二区在线免费观看| 99久久久精品| 国产成人福利片| 性久久久久久久| 国产精品毛片高清在线完整版| 欧洲一区二区三区在线| 亚洲第一狼人社区| 精品久久久久香蕉网| 欧美精品一卡两卡| 一本到高清视频免费精品| 国产传媒一区在线| 国产精品久久久久久久第一福利| 精品视频1区2区| www.欧美.com| 成人免费看的视频| 亚洲视频免费观看| 久久天天做天天爱综合色| 精品视频一区 二区 三区| 亚洲免费成人av| 久久精品亚洲麻豆av一区二区| 日韩一区二区三区免费看 | 日日夜夜免费精品| 天天操天天综合网| 青草国产精品久久久久久| 日韩1区2区日韩1区2区| 久久精品999| 94-欧美-setu| 国产精品正在播放| 丁香桃色午夜亚洲一区二区三区| 韩国成人精品a∨在线观看| 精品一区二区免费| 国产91综合网| www.爱久久.com| 欧美日韩精品三区| 欧美一区二区在线不卡| 国产日韩亚洲欧美综合| 日韩毛片一二三区| 亚洲成人一区在线| 精品一区二区av| 91在线精品秘密一区二区| 91精品国产综合久久精品图片| 日韩欧美电影一区| 日韩理论片中文av| 午夜精品成人在线|