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

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

?? ss_strm.c

?? 中國石油二期加油站IC系統后臺通訊軟件
?? C
?? 第 1 頁 / 共 3 頁
字號:
    /* copy the first mblock */
    first = bp = ssCopyB(mp);
    if (bp == NULLP)
    {
#if (ERRCLASS & ERRCLS_ADD_RES)
        SSLOGERROR(ERRCLS_ADD_RES, ESS434, ERRZERO, "ssCopyB() failed");
#endif

        RETVALUE(NULLP);
    }


    /* copy all the rest, linking the new ones at the same time */
    while (mp->b_cont)
    {
        mp = mp->b_cont;

        bp->b_cont = ssCopyB(mp);

        /* if any copy fails, free whatever exists of the new message */
        if (bp->b_cont == NULLP)
        {
#if (ERRCLASS & ERRCLS_ADD_RES)
            SSLOGERROR(ERRCLS_ADD_RES, ESS435, ERRZERO, "ssCopyB() failed");
#endif

            ssFreeMsg(first);
            RETVALUE(NULLP);
        }

        bp = bp->b_cont;
    }


    RETVALUE(first);
} /* ssCopyMsg */


/*
*
*       Fun:   ssDupB
*
*       Desc:  Duplicates the specified message block, copying it
*              into a newly-allocated message block. Increments
*              the reference count of the data block that is pointed
*              at by the original message block descriptor.
*
*       Ret:   non-NULL - ok
*              NULL     - failure
*
*       Notes:
*
*       File:  ss_strm.c
*
*/
#ifdef ANSI
PUBLIC SsMblk *ssDupB
(
SsMblk *mp                      /* message block */
)
#else
PUBLIC SsMblk *ssDupB(mp)
SsMblk *mp;                     /* message block */
#endif
{
    S16 i;                       /* temporary */
    SsMblk *bp;                  /* mblk for iteration */


    TRC1(ssDupB);


#if (ERRCLASS & ERRCLS_INT_PAR)
    if (mp == NULLP)
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS436, ERRZERO, "Null pointer");
        RETVALUE(NULLP);
    }
#endif


    /* allocate a message with no data buffer */
    bp = ssAllocB(0, 0);
    if (bp == NULLP)
    {
#if (ERRCLASS & ERRCLS_ADD_RES)
        SSLOGERROR(ERRCLS_ADD_RES, ESS437, ERRZERO, "ssAllocB() failed");
#endif

        RETVALUE(NULLP);
    }


    /*  make the new message block identical to the one to be dup'ed.
     *  notice that an mblk/dblk pair is allocated but only the mblk
     *  is used,, this is for optimum performance in the average case.
     */

    for (i = 0;  i < (S16) sizeof(SsMblk);  i++)
    {
        *(((U8 *) bp) + i) = *(((U8 *) mp) + i);
    }


    /* increment the reference count of the dblock */
    ssLockTsk();
    mp->b_datap->db_ref++;
    ssUnlockTsk();

    RETVALUE(bp);
} /* ssDupB */


/*
*
*       Fun:   ssDupMsg
*
*       Desc:  Calls ssDupB to duplicate the specified message by
*              copying all message block descriptors and then linking
*              the new message blocks together to form a new message.
*
*       Ret:   non-NULL - ok
*              NULL     - failure
*
*       Notes:
*
*       File:  ss_strm.c
*
*/
#ifdef ANSI
PUBLIC SsMblk *ssDupMsg
(
SsMblk *mp                      /* message block */
)
#else
PUBLIC SsMblk *ssDupMsg(mp)
SsMblk *mp;                     /* message block */
#endif
{
    SsMblk *first;               /* first mblk in message */
    SsMblk *bp;                  /* mblk for iteration */


    TRC1(ssDupMsg);


    /* dup the first mblock */
    first = bp = ssDupB(mp);
    if (bp == NULLP)
    {
#if (ERRCLASS & ERRCLS_ADD_RES)
        SSLOGERROR(ERRCLS_ADD_RES, ESS438, ERRZERO, "ssDupB() failed");
#endif

        RETVALUE(NULLP);
    }


    /* dup all the rest, linking the new ones at the same time */
    while (mp->b_cont)
    {
        mp = mp->b_cont;

        bp->b_cont = ssDupB(mp);

        /* if any dup fails, free whatever exists of the new message */
        if (bp->b_cont == NULLP)
        {
#if (ERRCLASS & ERRCLS_ADD_RES)
            SSLOGERROR(ERRCLS_ADD_RES, ESS439, ERRZERO, "ssDupB() failed");
#endif

            ssFreeMsg(first);
            RETVALUE(NULLP);
        }

        bp = bp->b_cont;
    }


    RETVALUE(first);
} /* ssDupMsg */


/*
*
*       Fun:   ssESBAlloc
*
*       Desc:  Allocates message and data blocks that point directly
*              at a client-supplied buffer.
*
*       Ret:   non-NULL - ok
*              NULL     - failure
*
*       Notes:
*
*       File:  ss_strm.c
*
*/
#ifdef ANSI
PUBLIC SsMblk *ssESBAlloc
(
U8 *base,                       /* client supplied data buffer */
S32 size,                       /* size of data buffer */
S32 pri,                        /* message priority */
SsFrtn *fr_rtn                  /* free routine */
)
#else
PUBLIC SsMblk *ssESBAlloc(base, size, pri, fr_rtn)
U8 *base;                       /* client supplied data buffer */
S32 size;                       /* size of data buffer */
S32 pri;                        /* message priority */
SsFrtn *fr_rtn;                 /* free routine */
#endif
{
    SsMblk *bp;                  /* mblk for iteration */
    Size m;                      /* mblk + dblk */
    S16 r;                       /* return value */


    TRC1(ssESBAlloc);


    UNUSED(pri);


#if (ERRCLASS & ERRCLS_INT_PAR)
    if (base == NULLP  ||  fr_rtn == NULLP)
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS440, ERRZERO, "Null pointer");
        RETVALUE(NULLP);
    }
#endif


    /* allocate space for an mblock and a dblock */
    m = (sizeof(SsMblk) + sizeof(SsDblk));
    r = SAlloc(strmCfg.mdRegion, &m, 0, (Data **)&bp);
    if (r != ROK)
    {
#if (ERRCLASS & ERRCLS_ADD_RES)
        SSLOGERROR(ERRCLS_ADD_RES, ESS441, (ErrVal) r, "SAlloc() failed");
#endif

        RETVALUE(NULLP);
    }


    /* use the generic set-up-message function to initialize everything */
    SS_STRM_INITB(bp, (SsDblk *)(((U8 *)bp) + sizeof(SsMblk)),
                  base, size, fr_rtn);


    RETVALUE(bp);
} /* ssESBAlloc */


/*
*
*       Fun:   ssFreeB
*
*       Desc:  Deallocates the specified message block descriptor
*              and frees the corresponding data block if the
*              reference count is equal to 1. If not, the reference
*              count is decremented.
*
*       Ret:   Void
*
*       Notes:
*
*       File:  ss_strm.c
*
*/
#ifdef ANSI
PUBLIC Void ssFreeB
(
SsMblk *mp                      /* message block */
)
#else
PUBLIC Void ssFreeB(mp)
SsMblk *mp;                     /* message block */
#endif
{
    SsMblk *bp;                  /* mblk for iteration */
    Size size;                   /* mblk + dblk */


    TRC1(ssFreeB);


#if (ERRCLASS & ERRCLS_INT_PAR)
    if (mp == NULLP)
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS442, ERRZERO, "Null pointer");
        RETVOID;
    }
#endif


    size = sizeof(SsMblk) + sizeof(SsDblk);


    /*  this mblock has already been freed, and still exists only
     *  because there is a reference to its dblock. it will be
     *  freed when the referring mblock is freed.
     */

    if (mp->b_datap == NULLP)
    {
        RETVOID;
    }


    /* ?? this should never happen ?? */
    ssLockTsk();
    if (mp->b_datap->db_ref == 0)
    {
        ssUnlockTsk();
#if (ERRCLASS & ERRCLS_DEBUG)
        SSLOGERROR(ERRCLS_DEBUG, ESS443, ERRZERO,
                   "Zero reference count in ssFreeB; logic failure");
#endif

        SFree(strmCfg.mdRegion, (Data *)mp, size);
        RETVOID;
    }

    /* decrement reference count of the dblock */
    mp->b_datap->db_ref--;


    /*  if we have no more references to this dblock, we can free
     *  the data buffer and the header.
     */

    if (mp->b_datap->db_ref == 0)
    {
        ssUnlockTsk();
        /*  if there is a free routine, we call it for the data buffer;
         *  otherwise, we've allocated the data buffer and so we free it.
         */

        if (mp->b_datap->db_frtnp)
        {
            (*(mp->b_datap->db_frtnp->free_func))(mp->b_datap->db_frtnp->free_arg);
        } else if (mp->b_datap->db_base != NULLP)
        {
            SFree(strmCfg.datRegion, mp->b_datap->db_base,
                  (Size)(mp->b_datap->db_lim - mp->b_datap->db_base));
        }


        /*  if the dblock is in this header, we free this header
         *  and we're done. if the dblock is in another header,
         *  we have to free that header too.
         */

        if (mp->b_datap != ((SsDblk *)(mp + sizeof(SsMblk))))
        {
            bp = (SsMblk *)(mp->b_datap - sizeof (SsMblk));
            SFree(strmCfg.mdRegion, (Data *)bp, size);
        }

        SFree(strmCfg.mdRegion, (Data *)mp, size);
    } else
    {
        ssUnlockTsk();
        /*  reference count is non-zero; if it is this header's
         *  dblock, we don't free the header, we just mark the
         *  dblock pointer empty so we know about it. if it is
         *  another header's dblock, we can free this header.
         */

        if (mp->b_datap == (SsDblk *)(mp + sizeof(SsMblk)))
        {
            mp->b_datap = NULLP;
        } else
        {
            SFree(strmCfg.mdRegion, (Data *)mp, size);
        }
    }

    RETVOID;
} /* ssFreeB */


/*
*
*       Fun:   ssFreeMsg
*
*       Desc:  Calls ssFreeB to free all message blocks and their
*              corresponding data blocks for the specified
*              message.
*
*       Ret:   Void
*
*       Notes:
*
*       File:  ss_strm.c
*
*/
#ifdef ANSI
PUBLIC Void ssFreeMsg
(
SsMblk *mp                      /* message block */
)
#else
PUBLIC Void ssFreeMsg(mp)
SsMblk *mp;                     /* message block */
#endif
{
    SsMblk *bp;                  /* mblk for iteration */


    TRC1(ssFreeMsg);


    /* free all the message blocks in the message */
    while (mp)
    {
        bp = mp;
        mp = mp->b_cont;
        ssFreeB(bp);
    }

    RETVOID;
} /* ssFreeMsg */


/*
*
*       Fun:   ssLinkB
*
*       Desc:  Puts the second specified message at the tail of
*              the first specified message.
*
*       Ret:   Void
*
*       Notes:
*
*       File:  ss_strm.c
*
*/
#ifdef ANSI
PUBLIC Void ssLinkB
(
SsMblk *mp,                     /* first message block */
SsMblk *bp                      /* second message block */
)
#else
PUBLIC Void ssLinkB(mp, bp)
SsMblk *mp;                     /* first message block */
SsMblk *bp;                     /* second message block */
#endif
{
    TRC1(ssLinkB);


#if (ERRCLASS & ERRCLS_INT_PAR)
    if (mp == NULLP  ||  bp == NULLP)
    {
        SSLOGERROR(ERRCLS_INT_PAR, ESS444, ERRZERO, "Null pointer");
        RETVOID;
    }
#endif


    /* run down to the end of the message */
    while (mp->b_cont)
    {
        mp = mp->b_cont;
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色av综合在线| 欧美一级搡bbbb搡bbbb| 天堂成人免费av电影一区| 精品国精品国产尤物美女| 色婷婷国产精品| 国产电影一区在线| 亚洲第一会所有码转帖| 中文字幕av不卡| 精品欧美一区二区在线观看| 欧美亚洲图片小说| 夫妻av一区二区| 老色鬼精品视频在线观看播放| 亚洲精品乱码久久久久久久久| 久久免费美女视频| 91精品国产综合久久国产大片| 91在线观看污| 国产成人在线视频网址| 日本不卡高清视频| 亚洲二区在线观看| 亚洲同性同志一二三专区| 国产欧美日韩精品一区| 日韩美女视频在线| 91精品综合久久久久久| 欧美视频一区二区三区| 91视频91自| aa级大片欧美| 粉嫩av一区二区三区在线播放| 久久99精品一区二区三区三区| 午夜精品久久久久久久久久| 亚洲综合成人在线视频| 亚洲人123区| 亚洲日本在线看| 亚洲欧洲日韩av| 国产精品久久久久久久久久免费看| xnxx国产精品| 久久色在线观看| 久久亚洲二区三区| 国产肉丝袜一区二区| 国产偷国产偷精品高清尤物 | 成人精品国产一区二区4080| 国产精品系列在线播放| 国产精品一区二区久久不卡| 狠狠色狠狠色综合| 国产伦理精品不卡| 岛国一区二区三区| av动漫一区二区| 99精品桃花视频在线观看| www.欧美色图| 色菇凉天天综合网| 欧美性猛片xxxx免费看久爱| 欧美日韩一区二区三区不卡| 欧美日韩精品免费| 日韩精品在线一区二区| 日韩美女一区二区三区| 精品少妇一区二区三区在线播放 | 亚洲精品视频一区| 一区二区三区电影在线播| 亚洲福利视频三区| 久久精品国产秦先生| 国产在线看一区| k8久久久一区二区三区| 一本色道**综合亚洲精品蜜桃冫| 色狠狠av一区二区三区| 欧美一区二区福利在线| 国产日本亚洲高清| 一区二区三区中文字幕精品精品| 午夜精品爽啪视频| 国产一区啦啦啦在线观看| 成人免费视频视频| 欧美丝袜丝交足nylons| 欧美一区二区黄| 中文字幕永久在线不卡| 性欧美大战久久久久久久久| 狠狠色丁香久久婷婷综| 不卡一区中文字幕| 5858s免费视频成人| 国产欧美1区2区3区| 亚洲国产三级在线| 国产精品99精品久久免费| 色中色一区二区| 日韩亚洲欧美在线| 国产精品久久久久久久久免费樱桃 | 久久久精品国产免大香伊| 亚洲欧美日韩系列| 日本成人在线一区| 成人午夜看片网址| 4438x亚洲最大成人网| 国产精品久久久一本精品| 亚洲国产va精品久久久不卡综合| 国产精品一区二区免费不卡 | 欧美日韩成人在线| 国产午夜精品美女毛片视频| 亚洲成人久久影院| eeuss鲁一区二区三区| 日韩一区二区电影在线| 亚洲摸摸操操av| 国产一区二区剧情av在线| 在线观看视频一区二区| 国产亚洲午夜高清国产拍精品| 亚洲午夜在线观看视频在线| 丰满岳乱妇一区二区三区| 91精品在线一区二区| 玉足女爽爽91| 国产99久久久精品| 日韩欧美一二三| 亚洲精品国产成人久久av盗摄 | 国产亚洲制服色| 免费人成网站在线观看欧美高清| 色欧美乱欧美15图片| 久久久久久日产精品| 奇米影视在线99精品| 日本乱人伦一区| 国产精品久久久久久久午夜片| 激情图区综合网| 欧美一区二区三区人| 亚洲一区二区三区四区在线免费观看| 国产99久久久久| 久久精品亚洲国产奇米99| 麻豆成人av在线| 91精品国产一区二区三区| 一级精品视频在线观看宜春院| eeuss鲁一区二区三区| 国产精品少妇自拍| 国产精品一线二线三线| 精品国产自在久精品国产| 麻豆国产精品一区二区三区| 欧美一级一级性生活免费录像| 天天av天天翘天天综合网色鬼国产 | 免费人成在线不卡| 欧美一区二区三区在线看 | 国产传媒一区在线| 久久亚洲精品国产精品紫薇| 久久99国产精品麻豆| 欧美成人a视频| 久久福利视频一区二区| 精品日韩99亚洲| 国产精品亚洲一区二区三区在线| 欧美精品一区二区蜜臀亚洲| 国内精品久久久久影院薰衣草| 欧美成人bangbros| 国产乱码字幕精品高清av| 国产午夜精品久久| 成人av网址在线| 亚洲视频综合在线| 欧美视频一区二区三区四区| 午夜精品123| 日韩免费观看2025年上映的电影| 久久国产精品区| 中文字幕电影一区| 99久久精品免费看| 一区二区三区国产精品| 69久久夜色精品国产69蝌蚪网| 久久国产精品无码网站| 国产日韩av一区| 91久久香蕉国产日韩欧美9色| 亚洲综合图片区| 日韩一区二区三区四区| 国产美女精品在线| 亚洲色图制服丝袜| 欧美日韩在线播放| 国内欧美视频一区二区| 国产精品久久久久久亚洲伦| 在线日韩一区二区| 另类综合日韩欧美亚洲| 亚洲国产精品成人综合| 在线视频你懂得一区二区三区| 日韩—二三区免费观看av| 国产亚洲精品超碰| 欧洲精品一区二区| 蜜臀99久久精品久久久久久软件| 国产拍揄自揄精品视频麻豆| 在线精品视频一区二区三四| 免费观看日韩av| 亚洲欧洲三级电影| 日韩亚洲国产中文字幕欧美| 丁香一区二区三区| 偷拍日韩校园综合在线| 国产欧美一区二区三区在线看蜜臀| 91老司机福利 在线| 男女视频一区二区| 亚洲欧洲一区二区三区| 中文字幕亚洲欧美在线不卡| 欧美性受极品xxxx喷水| 开心九九激情九九欧美日韩精美视频电影| 国产欧美一区二区精品婷婷| 欧美日韩亚洲另类| 国产91丝袜在线播放0| 丝袜美腿亚洲综合| 1区2区3区精品视频| 日韩免费高清视频| 欧美在线一二三四区| 高清国产一区二区| 久久机这里只有精品| 亚洲综合视频在线| 中文一区二区在线观看| 欧美一级日韩不卡播放免费| 色天天综合久久久久综合片| 国产成人av一区二区| 美女一区二区在线观看| 亚洲欧洲av另类|