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

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

?? distnamelib.c

?? vxworks操作系統(tǒng)的源代碼 供研究學(xué)習(xí)
?? C
?? 第 1 頁 / 共 4 頁
字號:
* ERRNO:* \is* \i S_distNameLib_INVALID_WAIT_TYPE* The wait type should be either NO_WAIT or WAIT_FOREVER .* \ie*/STATUS distNameFindByValueAndType    (    void *           value,       /* value to search for          */    DIST_NAME_TYPE   type,        /* type of object for which to search */    char *           name,        /* where to return name */    int              waitType     /* NO_WAIT or WAIT_FOREVER      */    )    {    DIST_NAME_DB_NODE *    pNode;    DIST_NAME_MATCH        match;    if (waitType != NO_WAIT && waitType != WAIT_FOREVER)        {        errnoSet (S_distNameLib_INVALID_WAIT_TYPE);        return (ERROR); /* wait type is invalid */        }    match.pMatchValue = value;    match.matchType = type;again:    pNode = distNameEach ((FUNCPTR) distNameMatchOne, (int) &match);    if (!pNode)        {        if (waitType == WAIT_FOREVER)            {            /* object not found; we have to wait ... */            distNameLclBlockOnAdd();            goto again;            }        else            return (ERROR);    /* object not found */        }        strcpy (name, (char *) &(pNode->symName));    return (OK);    }/***************************************************************************** distNameMatchOne - helper for distNameFindByValueAndType() (VxFusion option)** This routine is called by distNameFindByValueAndType() to check a database* node for a match.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: TRUE, if a match is found.** NOMANUAL*/LOCAL BOOL distNameMatchOne    (    DIST_NAME_DB_NODE * pNode,    /* database node to match */    DIST_NAME_MATCH *   pMatch    /* match data */    )    {    DIST_OBJ_NODE * pObjNodeMatch;    DIST_OBJ_NODE * pObjNodeDb;    MSG_Q_ID        msgQId;    if (pNode->type == pMatch->matchType)        {        switch (pNode->type)            {            case T_DIST_MSG_Q:                {                pObjNodeDb = MSG_Q_ID_TO_DIST_OBJ_NODE (pNode->value.msgQId);                msgQId = *((MSG_Q_ID *) pMatch->pMatchValue);                pObjNodeMatch = MSG_Q_ID_TO_DIST_OBJ_NODE (msgQId);                /*                 * Check for equality.  For group IDs, the objUniqId                  * referenced using objNodeId is enough.  However, for                 * normal message queues, we need to check both the objUniqId                 * (using objNodeId) and objUniqReside (using objNodeReside)                 * fields.                 */                if (IS_DIST_MSG_Q_TYPE_GRP ( (DIST_MSG_Q_ID)                     pObjNodeMatch->objNodeId))                    {                    if (pObjNodeDb->objNodeId == pObjNodeMatch->objNodeId)                        return (FALSE);        /* matched */                    }                else                    {                    if ((pObjNodeDb->objNodeId ==                                 pObjNodeMatch->objNodeId)                                    &&                         (pObjNodeDb->objNodeReside ==                                 pObjNodeMatch->objNodeReside))                        {                        return (FALSE);                        }                    }                break;                }            default:                {                char    *valDb = (char *) &(pNode->value);                char    *valMatch = (char *) pMatch->pMatchValue;                if (! bcmp (valDb, valMatch, pNode->valueLen))                    return (FALSE);        /* matched */                }            }        }    return (TRUE);    /* continue */    }/***************************************************************************** distNameRemove - remove an entry from the distributed name database (VxFusion option)** This routine removes an object, that is bound to <name>, from the* distributed name database.  All copies of the distributed name database * get updated.** This routine returns OK, even if some nodes on the system do not* respond to the remove request broadcast.  A node that does not acknowledge* a transmission is assumed to have crashed.* You can use the distCtl() routine* in distLib to set a routine to be called in the event that a node crashes.** Removing the name of a distributed object ID (T_DIST_MSG_Q) does not* invalidate the object ID.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: OK, or ERROR if the operation fails.** ERRNO:* \is* \i S_distNameLib_NAME_TOO_LONG* The name to be removed from the database is too long.* \ie** SEE ALSO: distLib*/STATUS distNameRemove    (    char * name            /* name of object to remove */    )    {    DIST_PKT_DNDB_RM    pktDndbRm;    DIST_IOVEC          IOVec[2];    int                 nameLen;#ifdef DIST_DIAGNOSTIC    STATUS    status;#endif    if ((nameLen = strlen (name)) > DIST_NAME_MAX_LENGTH)        {        errnoSet (S_distNameLib_NAME_TOO_LONG);        return (ERROR);    /* name too long */        }    if (distNameLclRemove (name, nameLen) == ERROR)        return (ERROR); /* name not in database */    pktDndbRm.dndbRmHdr.pktType = DIST_PKT_TYPE_DNDB;    pktDndbRm.dndbRmHdr.pktSubType = DIST_PKT_TYPE_DNDB_RM;    pktDndbRm.dndbRmNameLen = (UINT8) nameLen;    IOVec[0].pIOBuffer = &pktDndbRm;    IOVec[0].IOLen = DIST_PKT_HDR_SIZEOF (DIST_PKT_DNDB_RM);    IOVec[1].pIOBuffer = name;    IOVec[1].IOLen = nameLen;#ifdef DIST_DIAGNOSTIC    status = distNetIOVSend (DIST_IF_BROADCAST_ADDR, &IOVec[0], 2,                        WAIT_FOREVER, DIST_PKT_DNDB_PRIO);    if (status == ERROR)        {        /* Local node has removed binding--one of the remote nodes may not. */        distLog ("distNameRemove: error updating remote name databases\n");        }#else    distNetIOVSend (DIST_IF_BROADCAST_ADDR, &IOVec[0], 2,                    WAIT_FOREVER, DIST_PKT_DNDB_PRIO);#endif    return (OK);    /* return OK, always */    }/***************************************************************************** distNameInput - called when a DNDB packet arrives (VxFusion option)** This routine processes incoming DNDB packets.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: Status of packet processing.** NOMANUAL*/LOCAL DIST_STATUS distNameInput    (    DIST_NODE_ID    nodeIdSrc,    /* not currently used */    DIST_TBUF_HDR * pTBufHdr      /* points to input packet */    )    {    DIST_PKT * pPkt;    int        pktLen;        UNUSED_ARG(nodeIdSrc);        distStat.dndbInReceived++;    if ((pktLen = pTBufHdr->tBufHdrOverall) < sizeof (DIST_PKT))        distPanic ("distNameInput: packet too short\n");    pPkt = (DIST_PKT *) (DIST_TBUF_GET_NEXT (pTBufHdr))->pTBufData;    switch (pPkt->pktSubType)        {        case DIST_PKT_TYPE_DNDB_ADD:            {            DIST_NAME_TYPE_ALL   valNet;            DIST_PKT_DNDB_ADD    pktAdd;            DIST_NAME_DB_NODE *  pNode;            DIST_NAME_TYPE       type;            void *               pValNet;            char                 name[DIST_NAME_MAX_LENGTH + 1];            int                  valueLen;            int                  nameLen;            if (pktLen < DIST_PKT_HDR_SIZEOF (DIST_PKT_DNDB_ADD))                distPanic ("distNameInput/ADD: packet too short\n");            distTBufCopy (DIST_TBUF_GET_NEXT (pTBufHdr), 0,                    (char *)&pktAdd, DIST_PKT_HDR_SIZEOF (DIST_PKT_DNDB_ADD));            valueLen = pktAdd.dndbAddValueLen;            nameLen = pktAdd.dndbAddNameLen;            if (pktLen != DIST_PKT_HDR_SIZEOF (DIST_PKT_DNDB_ADD) +                    valueLen + nameLen)                distPanic ("distNameInput/ADD: packet has wrong length\n");            if (valueLen > DIST_VALUE_MAX_LENGTH)                distPanic ("distNameInput/ADD: value too long\n");            if (nameLen > DIST_NAME_MAX_LENGTH)                distPanic ("distNameInput/ADD: name too long\n");            distTBufCopy (DIST_TBUF_GET_NEXT (pTBufHdr),                    (DIST_PKT_HDR_SIZEOF (DIST_PKT_DNDB_ADD) + valueLen),                    (char *) &name, nameLen);            switch ((type = ntohs (pktAdd.dndbAddType)))                {                case T_DIST_UINT16:                    {                    distTBufCopy (DIST_TBUF_GET_NEXT (pTBufHdr),                            DIST_PKT_HDR_SIZEOF (DIST_PKT_DNDB_ADD),                            (char *) &(valNet.uint16), valueLen);                    valNet.uint16 = ntohs (valNet.uint16);                    pValNet = &(valNet.uint16);                    break;                    }                case T_DIST_FLOAT:                case T_DIST_UINT32:                case T_DIST_NODE:                    {                    distTBufCopy (DIST_TBUF_GET_NEXT (pTBufHdr),                            DIST_PKT_HDR_SIZEOF (DIST_PKT_DNDB_ADD),                            (char *) &(valNet.uint32), valueLen);                    valNet.uint32 = ntohl (valNet.uint32);                    pValNet = &(valNet.uint32);                    break;                    }                case T_DIST_UINT64:                case T_DIST_DOUBLE:                    {                    distTBufCopy (DIST_TBUF_GET_NEXT (pTBufHdr),                            DIST_PKT_HDR_SIZEOF (DIST_PKT_DNDB_ADD),                            (char *) &(valNet.uint64), valueLen);                    pValNet = distNtoh64((uint32_t *)&(valNet.uint64),type);                    break;                    }                case T_DIST_MSG_Q:    /* complex objects go here */                    {                    DIST_OBJ_UNIQ_ID    *pObjUniqId;                    distTBufCopy (DIST_TBUF_GET_NEXT (pTBufHdr),                            DIST_PKT_HDR_SIZEOF (DIST_PKT_DNDB_ADD),                            (char *) &(valNet.objUniqId), valueLen);                    pObjUniqId = (DIST_OBJ_UNIQ_ID *) &(valNet.objUniqId);                    pObjUniqId->objUniqReside =                            ntohl (pObjUniqId->objUniqReside);                    pObjUniqId->objUniqId =                            ntohl (pObjUniqId->objUniqId);                    pValNet = pObjUniqId;                    break;                    }                default:    /* T_DIST_UINT8 and user defined */                    {                    distTBufCopy (DIST_TBUF_GET_NEXT (pTBufHdr),                            DIST_PKT_HDR_SIZEOF (DIST_PKT_DNDB_ADD),                            (char *) &(valNet.field), valueLen);                    pValNet = &valNet.field;                    }                }            pNode = distNameLclAddRaw ((char *) &name, nameLen, pValNet,                    valueLen, type);            if (! pNode)                distPanic ("distNameInput/ADD: database add failed\n");            return (DIST_NAME_STATUS_OK);            }        case DIST_PKT_TYPE_DNDB_RM:            {            DIST_PKT_DNDB_RM    pktRm;            char                name[DIST_NAME_MAX_LENGTH + 1];            int                 nameLen;            if (pktLen < DIST_PKT_HDR_SIZEOF (DIST_PKT_DNDB_RM))                distPanic ("distNameInput/RM: packet too short\n");            distTBufCopy (DIST_TBUF_GET_NEXT (pTBufHdr), 0,                    (char *) &pktRm, DIST_PKT_HDR_SIZEOF (DIST_PKT_DNDB_RM));            nameLen = pktRm.dndbRmNameLen;            if (pktLen != DIST_PKT_HDR_SIZEOF (DIST_PKT_DNDB_RM) + nameLen)                distPanic ("distNameInput/RM: packet has wrong length\n");            if (nameLen > DIST_NAME_MAX_LENGTH)                distPanic ("distNameInput/RM: name too long\n");            distTBufCopy (DIST_TBUF_GET_NEXT (pTBufHdr),                    DIST_PKT_HDR_SIZEOF (DIST_PKT_DNDB_RM),                    (char *) &name, nameLen);                        if (distNameLclRemove (name, nameLen) == ERROR)                distPanic ("distNameInput/RM: not in database\n");            return (DIST_NAME_STATUS_OK);            }        default:#ifdef DIST_DIAGNOSTIC            distLog ("distNameInput: unknown subtype %d\n",                    pPkt->pktSubType);#endif            return (DIST_NAME_STATUS_PROTOCOL_ERROR);        }    }/***************************************************************************** distNameLclAddRaw - bind name to raw value in local name database (VxFusion option)** Internally used function to bind name in local database.*

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品色呦呦| 久久久久免费观看| 亚洲成人免费av| 欧美日韩一区 二区 三区 久久精品| 亚洲免费资源在线播放| 在线观看国产日韩| 偷偷要91色婷婷| 久久久综合激的五月天| 成人妖精视频yjsp地址| 一区二区三区国产| 欧美高清视频在线高清观看mv色露露十八| 日本在线观看不卡视频| 日韩视频免费直播| 成人av小说网| 亚洲五码中文字幕| 精品国产凹凸成av人网站| 丰满少妇在线播放bd日韩电影| 亚洲欧美中日韩| 欧美日韩高清一区二区三区| 麻豆精品在线播放| 日韩电影一区二区三区| 日韩精品中文字幕在线一区| 成人性生交大合| 亚洲国产另类av| 久久精品亚洲麻豆av一区二区 | 日本欧美在线观看| 26uuu精品一区二区三区四区在线| 国产成人啪免费观看软件| 一区二区视频免费在线观看| 日韩欧美国产麻豆| 99久久99久久精品国产片果冻| 日韩 欧美一区二区三区| 欧美激情一区二区三区在线| 欧美三级一区二区| 国产成人免费视频一区| 视频一区欧美精品| 国产精品沙发午睡系列990531| 欧美一区二区女人| 91在线播放网址| 卡一卡二国产精品| 一区二区三区成人| 国产丝袜在线精品| 日韩色在线观看| 91国偷自产一区二区三区观看| 国产一区二区三区在线观看免费| 一区二区高清在线| 欧美激情一区二区三区在线| 91精品国产一区二区三区| 99久久精品国产精品久久| 裸体健美xxxx欧美裸体表演| 亚洲免费观看高清| 捆绑调教一区二区三区| 亚洲一级二级三级在线免费观看| 国产日韩欧美制服另类| 精品蜜桃在线看| 欧美日韩一区二区在线视频| eeuss鲁片一区二区三区在线看| 蜜桃一区二区三区四区| 亚洲电影视频在线| 自拍视频在线观看一区二区| 国产精品视频看| 国产婷婷一区二区| 久久综合色8888| 日韩免费看的电影| 欧美一区二区三区在线观看视频| 欧美调教femdomvk| 精品视频一区二区三区免费| 91小视频免费观看| av男人天堂一区| 92精品国产成人观看免费| 99re这里只有精品首页| 成人a免费在线看| eeuss鲁一区二区三区| 成人高清视频免费观看| 成人午夜激情视频| 成人av网址在线| 99久久精品免费看| 在线一区二区视频| 欧美挠脚心视频网站| 欧美老女人第四色| 欧美丰满少妇xxxbbb| 欧美一区二区三区播放老司机| 欧美日本乱大交xxxxx| 欧美日韩国产区一| 69堂国产成人免费视频| 欧美一二三区在线| xfplay精品久久| 国产欧美视频一区二区| 中文字幕欧美一| 亚洲一区二区精品3399| 午夜亚洲国产au精品一区二区| 日韩精品电影在线| 久久91精品国产91久久小草| 国产精品一区二区91| 白白色 亚洲乱淫| 在线看日韩精品电影| 777午夜精品免费视频| 日韩欧美国产电影| 中文字幕av一区二区三区| 一区二区三区日韩在线观看| 天天亚洲美女在线视频| 激情另类小说区图片区视频区| 国产成人8x视频一区二区| 97久久超碰国产精品| 欧美日韩高清一区二区不卡| 精品国产乱码91久久久久久网站| 欧美激情一区二区三区四区 | 91高清视频免费看| 欧美肥妇bbw| 久久精品夜色噜噜亚洲a∨| 亚洲欧洲成人精品av97| 偷窥少妇高潮呻吟av久久免费| 经典三级视频一区| 一本一道久久a久久精品 | 91小视频免费看| 日韩视频永久免费| 最新高清无码专区| 日本色综合中文字幕| 成人免费av在线| 在线电影欧美成精品| 欧美激情综合五月色丁香| 婷婷综合另类小说色区| www..com久久爱| 日韩欧美一区二区在线视频| 亚洲欧美视频在线观看视频| 精品一区二区三区不卡| 欧美中文字幕一区| 国产女人18毛片水真多成人如厕| 亚洲成人一二三| 不卡在线观看av| 欧美岛国在线观看| 亚洲一区二区三区中文字幕 | 2021中文字幕一区亚洲| 亚洲制服丝袜一区| 成人精品gif动图一区| 欧美一级二级在线观看| 夜夜嗨av一区二区三区| 国产盗摄精品一区二区三区在线| 欧美日韩黄色影视| 亚洲色图视频网| 国产iv一区二区三区| 91精品欧美综合在线观看最新| 亚洲欧美偷拍三级| 国产69精品久久久久毛片| 欧美一区三区四区| 亚洲午夜在线观看视频在线| 99久久久国产精品| 国产精品素人一区二区| 精品一区二区在线视频| 欧美一区二区在线播放| 亚洲国产综合人成综合网站| 99在线视频精品| 国产日韩av一区| 国产最新精品免费| 日韩精品一区二区三区老鸭窝| 午夜精品久久久久久久| 欧美亚洲丝袜传媒另类| 亚洲女同一区二区| av在线一区二区| 最新久久zyz资源站| 成人午夜视频在线| 中文字幕第一页久久| 国产高清亚洲一区| 国产欧美日韩精品一区| 懂色av噜噜一区二区三区av| 亚洲国产精品成人综合| 国产激情一区二区三区四区| 久久综合99re88久久爱| 精彩视频一区二区| 久久久精品欧美丰满| 岛国精品一区二区| 中文字幕精品一区二区三区精品| 成人动漫一区二区在线| 国产精品黄色在线观看| 99综合电影在线视频| 一区二区久久久| 欧美日韩一卡二卡三卡| 奇米888四色在线精品| 日韩欧美久久一区| 精品亚洲成av人在线观看| 久久综合久色欧美综合狠狠| 国产精品1区二区.| 国产精品久久三| 在线观看免费视频综合| 天堂av在线一区| 精品国产三级电影在线观看| 国产高清亚洲一区| 日韩美女视频19| 欧美日韩精品电影| 国产制服丝袜一区| 国产精品盗摄一区二区三区| 欧美色手机在线观看| 久久国产精品99久久人人澡| 日本一区二区不卡视频| 欧美色图天堂网| 国产精品一品视频| 亚洲与欧洲av电影| 欧美α欧美αv大片| 不卡欧美aaaaa| 日日夜夜免费精品|