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

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

?? ss_msg.c

?? 中國石油二期加油站IC系統后臺通訊軟件
?? C
?? 第 1 頁 / 共 5 頁
字號:
        while (numBytes--)
            *dBuf->b_wptr++ = *cptr++;
        tmp = tmp->b_cont;
    }
    minfo2->len = minfo1->len;
    /* set the endptr and b_cont of dstBuf to point to dBuf */
    minfo2->endptr = dBuf;
    (*dstBuf)->b_cont = dBuf;

    RETVALUE(ROK);
}



/*
*
*       Fun:   SAddMsgRef
*
*       Desc:  This function is used to copy a message into
*              a new region and or pool of memory.
*
*       Ret:   ROK      - ok
*              RFAILED  - failed, general (optional)
*              ROUTRES  - failed, out of resources (optional)
*
*       Notes: None
*
*       File:  ss_msg.c
*
*/
#ifdef ANSI
PUBLIC S16 SAddMsgRef
(
Buffer *srcBuf,
Region dstRegion,
Pool dstPool,
Buffer **dstBuf
)
#else
PUBLIC S16 SAddMsgRef(srcBuf, dstRegion, dstPool, dstBuf)
Buffer *srcBuf;
Region dstRegion;
Pool dstPool;
Buffer **dstBuf;
#endif
{
    SsMsgInfo *minfo1;
    SsMsgInfo *minfo2;
    Buffer *tmp;
    Buffer *dBuf;
    Buffer *curblk;
    Buffer *newblk;
    Buffer *prevblk;
    Data *cptr;
    MsgLen numBytes;

    TRC1(SAddMsgRef)

#if (ERRCLASS & ERRCLS_INT_PAR)
    if (!srcBuf)
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS282, ERRZERO, "SAddMsgRef : Null Buffer");
        RETVALUE(RFAILED);
    }
    if (srcBuf->b_datap->db_type != SS_M_PROTO)
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS283, ERRZERO, "SAddMsgRef : Incorrect\
                                                   buffer type");
        RETVALUE(RFAILED);
    }
#endif

    /* allocate a message buffer */
    if (SGetMsg(dstRegion, dstPool, dstBuf) != ROK)
    {
#if (ERRCLASS & ERRCLS_DEBUG)
        SSLOGERROR(ERRCLS_DEBUG, ESS284, ERRZERO, "SAddMsgRef : SGetMsg failed");
#endif
        RETVALUE(RFAILED);
    }
    /* get the SsMsgInfo from srcBuf */
    minfo1 = (SsMsgInfo*) srcBuf->b_rptr;

    /* get the SsMsgInfo from srcBuf */
    minfo2 = (SsMsgInfo*) (*dstBuf)->b_rptr;

    /* get the first SS_M_DATA blk of srcBuf */
    tmp = srcBuf->b_cont;

    /* if srcBuf and dstBuf belong to the same region, increment the reference
     * count
     */
    if (dstRegion == minfo1->region)
    {
        newblk = NULLP;
        curblk = NULLP;
        prevblk = NULLP;

        while (tmp)
        {
            if ((curblk = ssDupB(tmp)) == NULLP)
            {
                while (newblk)
                {
                    curblk = newblk->b_cont;
                    (Void) SPutDBuf(minfo1->region, minfo1->pool, newblk);
                    newblk = curblk;
                }
                (Void) SPutMsg(*dstBuf);
                RETVALUE(ROUTRES);
            }

            if (!prevblk)
                newblk = curblk;
            else
                prevblk->b_cont = curblk;
            prevblk = curblk;

            tmp = tmp->b_cont;
        }
        if (curblk)
            curblk->b_cont = NULLP;

        minfo2->len = minfo1->len;
        minfo2->endptr = curblk;
        (*dstBuf)->b_cont = newblk;

        RETVALUE(ROK);
    }

    /* allocate a data buffer */
    if (ssGetDBufOfSize(dstRegion, minfo1->len, &dBuf) != ROK)
    {
        SSLOGERROR(ERRCLS_DEBUG, ESS285, ERRZERO, "SAddMsgRef : ssGetDBufOfSize\
                 failed");
        RETVALUE(ROUTRES);
    }
    dBuf->b_datap->db_type = SS_M_DATA;

    while (tmp)
    {
        numBytes = tmp->b_wptr - tmp->b_rptr;
        cptr = tmp->b_rptr;
        while (numBytes--)
            *dBuf->b_wptr++ = *cptr++;
        tmp = tmp->b_cont;
    }
    minfo2->len = minfo1->len;
    /* set the endptr and b_cont of dstBuf to point to dBuf */
    minfo2->endptr = dBuf;
    (*dstBuf)->b_cont = dBuf;

    RETVALUE(ROK);
}


/*
*
*       Fun:   SGetDBuf
*
*       Desc:  This function allocates a buffer from the dynamic
*              memory pool indicated by the caller.
*
*       Ret:   ROK      - ok
*              RFAILED  - failed, general (optional)
*              ROUTRES  - failed, out of resources (optional)
*
*       Notes: The dynamic memory pools are used to create and
*              manipulate messages.
*
*              SGetDBuf is never called by a protocol layer.
*
*              SGetDBuf assumes that interrupts are already disabled.
*
*       File:  ss_msg.c
*
*/

#ifdef ANSI
PUBLIC S16 SGetDBuf
(
Region region,              /* region id */
Pool pool,                  /* pool id */
Buffer **bufPtr
)
#else
PUBLIC S16 SGetDBuf(region, pool, bufPtr)
Region region;              /* region id */
Pool pool;                  /* pool id */
Buffer **bufPtr;            /* pointer to buffer */
#endif
{
    Size size;
    Size mdsize;
    Data *data;
    SsDblk *dptr;
    SsRegionEntry *regp;

    TRC1(SGetDBuf)

#if (ERRCLASS & ERRCLS_INT_PAR)
    /* check buffer pointer */
    if (!bufPtr)
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS286, ERRZERO, "SGetDBuf : Null Buffer");
        RETVALUE(RFAILED);
    }
    if (region >= SS_MAX_REGS)
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS287, ERRZERO, "SGetDBuf : Invalid region\
                                                   id");
        RETVALUE(RFAILED);
    }

    if (pool >= SS_MAX_POOLS_PER_REG)
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS288, ERRZERO, "SGetDBuf : Invalid pool id");
        RETVALUE(RFAILED);
    }
#endif

    regp = &osCp.regionTbl[region];

#if (ERRCLASS & ERRCLS_DEBUG)
    if (regp->poolTbl[pool].type != SS_POOL_DYNAMIC)
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS289, ERRZERO,
                   "SGetDBuf : Invalid pool type");
        RETVALUE(RFAILED);
    }
#endif

    /* get the size from region/pool */
    size = regp->poolTbl[pool].u.dpool.size;

    mdsize = MDBSIZE;

    /* out board memory */
    if (regp->flags & SS_OUTBOARD_FLAG)
    {
        /* allocate memory for data buffer */
        if (SAlloc(region, &size, 0, &data) != ROK)
        {
            RETVALUE(ROUTRES);
        }
        if (SAlloc(SS_DFLT_REGION, &mdsize, 0, (Data **) bufPtr) != ROK)
        {
            SFree(region, (Data *) data, size);
            RETVALUE(ROUTRES);
        }
    } else
    {
        mdsize += size;
        if (SAlloc(region, &mdsize, 0, (Data **) bufPtr) != ROK)
        {
            RETVALUE(ROUTRES);
        }
        data = (Data *) (*bufPtr) + MDBSIZE;
        size = mdsize - MDBSIZE;
    }

    dptr = (SsDblk*) (((Data *) (*bufPtr)) + MBSIZE);

    INITB((*bufPtr), dptr, data, size, NULLP)

    RETVALUE(ROK);
}


/*
*
*       Fun:   SGetDBufBySize
*
*       Desc:  This function allocates a buffer from the dynamic
*              memory pool indicated by the caller.
*
*       Ret:   ROK      - ok
*              RFAILED  - failed, general (optional)
*              ROUTRES  - failed, out of resources (optional)
*
*       Notes: The dynamic memory pools are used to create and
*              manipulate messages.
*
*              SGetDBufBySize is never called by a protocol layer.
*
*              SGetDBufBySize assumes that interrupts are already disabled.
*
*       File:  ss_msg.c
*
*/

#ifdef ANSI
PUBLIC S16 SGetDBufBySize
(
Region region,              /* region id */
Pool pool,                  /* pool id */
Size size,                  /* buffer size */
Buffer **bufPtr
)
#else
PUBLIC S16 SGetDBuf(region, pool, size, bufPtr)
Region region;              /* region id */
Pool pool;                  /* pool id */
Size size;                  /* buffer size */
Buffer **bufPtr;            /* pointer to buffer */
#endif
{
    Size mdsize;
    Data *data;
    SsDblk *dptr;
    SsRegionEntry *regp;

    TRC1(SGetDBuf)

#if (ERRCLASS & ERRCLS_INT_PAR)
    /* check buffer pointer */
    if (!bufPtr)
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS286, ERRZERO, "SGetDBuf : Null Buffer");
        RETVALUE(RFAILED);
    }
    if (region >= SS_MAX_REGS)
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS287, ERRZERO, "SGetDBuf : Invalid region\
                                                   id");
        RETVALUE(RFAILED);
    }

    if (pool >= SS_MAX_POOLS_PER_REG)
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS288, ERRZERO, "SGetDBuf : Invalid pool id");
        RETVALUE(RFAILED);
    }
    if (0 == size )
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS288, ERRZERO, "SGetDBuf : Invalid size");
        RETVALUE(RFAILED);
    }

#endif

    regp = &osCp.regionTbl[region];

#if (ERRCLASS & ERRCLS_DEBUG)
    if (regp->poolTbl[pool].type != SS_POOL_DYNAMIC)
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS289, ERRZERO,
                   "SGetDBuf : Invalid pool type");
        RETVALUE(RFAILED);
    }
#endif

    mdsize = MDBSIZE;

    /* out board memory */
    if (regp->flags & SS_OUTBOARD_FLAG)
    {
        /* allocate memory for data buffer */
        if (SAlloc(region, &size, 0, &data) != ROK)
        {
            RETVALUE(ROUTRES);
        }
        if (SAlloc(SS_DFLT_REGION, &mdsize, 0, (Data **) bufPtr) != ROK)
        {
            SFree(region, (Data *) data, size);
            RETVALUE(ROUTRES);
        }
    } else
    {
        mdsize += size;
        if (SAlloc(region, &mdsize, 0, (Data **) bufPtr) != ROK)
        {
            RETVALUE(ROUTRES);
        }
        data = (Data *) (*bufPtr) + MDBSIZE;
        size = mdsize - MDBSIZE;
    }

    dptr = (SsDblk*) (((Data *) (*bufPtr)) + MBSIZE);

    INITB((*bufPtr), dptr, data, size, NULLP)

    RETVALUE(ROK);
}




/*
*
*       Fun:   SPutDBuf
*
*       Desc:  This function deallocates a buffer back to the
*              dynamic memory pool indicated by the caller.
*
*       Ret:   ROK      - ok
*              RFAILED  - failed, general (optional)
*
*       Notes: The dynamic memory pools are used to create and
*              manipulate messages.
*
*              SPutDBuf is never called by a protocol layer.
*
*              SPutDBuf assumes that interrupts are already disabled.
*
*       File:  ss_msg.c
*
*/

#ifdef ANSI
PUBLIC S16 SPutDBuf
(
Region region,
Pool pool,
Buffer *buf
)
#else
PUBLIC S16 SPutDBuf(region, pool, buf)
Region region;
Pool pool;
Buffer *buf;
#endif
{
    Buffer *tmp;
    SsRegionEntry *regp;

    TRC2(SPutDBuf);


#if (ERRCLASS & ERRCLS_INT_PAR)
    if (region >= SS_MAX_REGS)
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS290, ERRZERO, "SPutDBuf:Invalid region");
        RETVALUE(RFAILED);
    }

    if (pool >= SS_MAX_POOLS_PER_REG)
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS291, ERRZERO, "SPutDBuf:Invalid pool");
        RETVALUE(RFAILED);
    }

    if (buf == NULLP)
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS292, ERRZERO, "SPutDBuf:Null pointer");
        RETVALUE(RFAILED);
    }

    if (buf->b_datap->db_type != SS_M_DATA)
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS293, ERRZERO, "SPutDBuf:Incorrect\
                 buffer type");
        RETVALUE(RFAILED);
    }
#endif

    regp = &osCp.regionTbl[region];

#if (ERRCLASS & ERRCLS_DEBUG)
    if (regp->poolTbl[pool].type != SS_POOL_DYNAMIC)
    {
        SSLOGERROR(ERRCLS_DEBUG, ESS294, ERRZERO, "SPutDBuf:Invalid pool type");
        RETVALUE(RFAILED);
    }
#endif
    /* if reference count falls to zero */
    ssLockTsk();
    if (!--buf->b_datap->db_ref)
    {
        ssUnlockTsk();
        /* if the buffer, buf is a message blk obtained during dupb */
        if (buf != (SsMblk *) (((Data*) (buf->b_datap)) - MBSIZE))
        {
            tmp = (SsMblk *) (((Data*) (buf->b_datap)) - MBSIZE);
            SFree(SS_DFLT_REGION, (Data *) buf, MDBSIZE);
            buf = tmp;
        }
        /* if not outboard memory, release MDBSIZE + data buffer */
        if (!(regp->flags & SS_OUTBOARD_FLAG))
            SFree(region, (Data *) buf, MDBSIZE +
                  buf->b_datap->db_lim - buf->b_datap->db_base);
        else
        {
            SFree(region, (Data *) buf->b_datap->db_base,
                  buf->b_datap->db_lim - buf->b_datap->db_base);
            SFree(SS_DFLT_REGION, (Data *) buf, MDBSIZE);
        }
    } else
    {
        ssUnlockTsk();
        /* if the buffer, buf is a message blk obtained during dupb, */
        /* release the message blk */
        if (buf != (SsMblk *) (((Data*) (buf->b_datap)) - MBSIZE))
            SFree(SS_DFLT_REGION, (Data *) buf, MDBSIZE);
    }
    RETVALUE(ROK);
}


/*
*
*       Fun:   SCatMsg
*
*       Desc:  This function will concatenate the two specified messages
*              into one message.
*
*       Ret:   ROK      - ok
*              RFAILED  - failed, general (optional)
*
*

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本伦理一区二区| 久久久国际精品| 91麻豆高清视频| 国产v综合v亚洲欧| 国产一区二区三区免费| 久久成人麻豆午夜电影| 久久精品国产99国产精品| 免费观看成人av| 麻豆精品在线观看| 国产一区视频网站| 国产精品亚洲一区二区三区妖精| 久久精品国产免费| 国产在线国偷精品产拍免费yy| 极品少妇xxxx精品少妇| 美女视频一区在线观看| 久久电影网站中文字幕| 国产成人免费视频网站| 不卡一区二区中文字幕| 色婷婷久久综合| 欧美羞羞免费网站| 69堂亚洲精品首页| 欧美大片一区二区| 国产午夜精品久久久久久免费视| 久久亚洲一区二区三区明星换脸| 国产亚洲污的网站| 樱桃视频在线观看一区| 亚洲成av人片在线| 精品一区精品二区高清| 国产精品一区二区三区99| 99视频在线精品| 欧美午夜影院一区| 精品人伦一区二区色婷婷| 国产欧美日韩综合| 亚洲精选免费视频| 日韩不卡一区二区| 国产成人福利片| 欧美日韩一区久久| 欧美成va人片在线观看| 国产精品伦理在线| 亚洲国产精品嫩草影院| 激情图片小说一区| av电影在线观看不卡| 欧美区在线观看| 久久精品人人爽人人爽| 亚洲老妇xxxxxx| 久久国产人妖系列| 99在线精品视频| 日韩一级完整毛片| 国产精品福利一区二区三区| 天天综合天天综合色| 国产成人福利片| 欧美伦理电影网| 国产精品情趣视频| 日韩电影免费在线| 成人av先锋影音| 日韩欧美在线综合网| 亚洲人一二三区| 久久99国内精品| 91高清在线观看| 国产午夜精品一区二区 | 亚洲国产精品嫩草影院| 国产美女在线精品| 欧美影院一区二区| 国产清纯白嫩初高生在线观看91| 午夜欧美在线一二页| 国产91精品在线观看| 91精品国产黑色紧身裤美女| 日韩毛片精品高清免费| 精品系列免费在线观看| 欧美在线一区二区三区| 国产欧美一区二区在线观看| 男女性色大片免费观看一区二区 | 欧美老人xxxx18| 国产精品电影一区二区三区| 裸体在线国模精品偷拍| 欧美综合欧美视频| 国产精品传媒入口麻豆| 国产在线一区观看| 9191久久久久久久久久久| 日韩理论片在线| 国产福利一区二区三区视频| 欧美日韩三级在线| 亚洲日本丝袜连裤袜办公室| 成人国产在线观看| 久久精品人人做人人综合 | 蜜桃一区二区三区在线| 欧美性受极品xxxx喷水| 中文字幕一区二区三区四区| 国产一区二区三区蝌蚪| 亚洲精品一区二区三区蜜桃下载 | 亚洲图片欧美视频| 99re热这里只有精品视频| 国产网站一区二区| 韩国一区二区三区| 欧美成人性战久久| 另类专区欧美蜜桃臀第一页| 在线观看91av| 日韩国产精品久久| 欧美日本在线视频| 五月激情综合色| 欧美乱妇23p| 天天做天天摸天天爽国产一区| 欧美日本在线视频| 天堂成人国产精品一区| 欧美男男青年gay1069videost| 亚洲午夜免费视频| 欧美视频自拍偷拍| 亚洲一区二区黄色| 欧美日韩日本视频| 午夜精品福利一区二区三区av| 欧美日韩亚洲综合一区 | 欧洲精品中文字幕| 亚洲一区二区五区| 欧美日韩美少妇| 日韩精品久久久久久| 日韩一级黄色大片| 蜜臀av性久久久久蜜臀av麻豆| 日韩欧美的一区二区| 精品一区二区在线免费观看| 久久久精品人体av艺术| 成人精品视频网站| 亚洲三级小视频| 欧美日韩免费视频| 老鸭窝一区二区久久精品| xfplay精品久久| www.亚洲精品| 亚洲一区二区三区四区在线观看 | 精品日韩一区二区| 懂色av一区二区三区蜜臀| 中文字幕日韩精品一区| 欧美在线你懂得| 麻豆成人久久精品二区三区小说| 精品盗摄一区二区三区| 成人av网在线| 亚洲成av人片一区二区三区| 精品福利视频一区二区三区| 成人黄色av网站在线| 亚洲午夜在线视频| 亚洲精品一线二线三线无人区| 国产白丝精品91爽爽久久| 亚洲一区二区三区四区不卡| 精品人在线二区三区| 99riav久久精品riav| 美女脱光内衣内裤视频久久影院| 欧美激情艳妇裸体舞| 欧美日韩亚洲综合一区| 国产精品亚洲一区二区三区妖精| 一区二区三区国产精华| 欧美一级黄色片| av不卡一区二区三区| 日本网站在线观看一区二区三区| 国产婷婷一区二区| 欧美色网一区二区| 国产成人综合在线| 亚洲一二三四在线| 国产欧美日韩在线看| 欧美日韩国产免费| 成人亚洲一区二区一| 欧美a级理论片| 亚洲欧洲综合另类| 日韩精品一区二区三区在线观看 | 国产午夜久久久久| 欧美日韩精品一区二区三区 | 国产尤物一区二区在线| 欧美日韩国产天堂| 成人理论电影网| 蜜臀av一区二区在线免费观看| 亚洲三级久久久| 久久青草国产手机看片福利盒子 | 久久久久久久久久久久电影 | 国产人成亚洲第一网站在线播放| 欧美年轻男男videosbes| 成人激情午夜影院| 男男视频亚洲欧美| 伊人一区二区三区| 国产婷婷色一区二区三区四区 | 精品少妇一区二区| 欧美日韩一区二区三区四区| www..com久久爱| 久88久久88久久久| 亚洲成人一区在线| 亚洲天堂久久久久久久| 久久精品人人做| 精品免费99久久| 欧美精品在线观看播放| 91麻豆国产精品久久| 成人综合日日夜夜| 激情六月婷婷久久| 久久av老司机精品网站导航| 亚洲午夜成aⅴ人片| 亚洲精品美国一| 中文字幕五月欧美| 国产精品视频看| 国产亚洲女人久久久久毛片| 久久综合色天天久久综合图片| 欧美电影在线免费观看| 欧美欧美欧美欧美首页| 欧美女孩性生活视频| 欧美日韩激情一区二区三区| 欧美日韩三级一区|