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

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

?? distnamelib.c

?? vxworks操作系統(tǒng)的源代碼 供研究學(xué)習(xí)
?? C
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
/* distNameLib.c - distributed name database library (VxFusion option) *//* Copyright 1999-2002 Wind River Systems, Inc. *//*modification history--------------------01r,05dec01,jws  no ARM cross endian FP support (SPR 70116 final)01q,06nov01,jws  move tmp declaration01p,22oct01,jws  eliminate compiler warnings (SPR 71117)                 man pages update (SPR 71239)01o,15oct01,jws  merge ARM FP format handling back from AE (SPR 70116 prelim)01n,24may99,drm  added vxfusion prefix to VxFusion related includes01m,23feb99,wlf  doc edits01l,18feb99,wlf  doc cleanup01k,13feb99,drm  Added two routines for flipping bytes of UINT64/double01j,12feb99,drm  Fixed a bug in DistNameMatchOne to fix SPR #2500201i,28oct98,drm  documentation modifications01h,11sep98,drm  added #include to pick up distPanic()01g,13may98,ur   some cleanup, when distNameInit() fails01f,08may98,ur   removed 8 bit node id restriction01e,15apr98,ur   distNameRemove() returns node to free list01d,15apr98,ur   name database update returns OK, even if broadcast failed01c,30mar98,ur   added some more errnos;				 changed VALUE_TOO_LONG to ILLEGAL_LENGTH.01b,27jun97,ur   tested - ok.01a,06jun97,ur   written.*//*DESCRIPTIONThis library contains the distributed objects distributed name database androutines for manipulating it.  Symbolic names are bound to values, such asmessage queue identifiers or simple integers. Entries can be found by nameor by value and type.  The distributed name database is replicatedthroughout the system, with a copy sitting on each node.The distributed name database library is initialized by callingdistInit() in distLib.AVAILABILITYThis module is distributed as a component of the unbundled distributedmessage queues option, VxFusion.INCLUDE FILES: distNameLib.hSEE ALSO: distLib, distNameShow*/#include "vxWorks.h"#if defined (DIST_NAME_REPORT) || defined (DIST_DIAGNOSTIC)#include "stdio.h"#endif#include "stdlib.h"#include "string.h"#include "semLib.h"#include "private/semLibP.h"#include "sllLib.h"#include "hashLib.h"#include "msgQLib.h"#include "errnoLib.h"#include "netinet/in.h"#include "vxfusion/msgQDistLib.h"#include "vxfusion/distNameLib.h"#include "vxfusion/distIfLib.h"#include "vxfusion/distStatLib.h"#include "vxfusion/private/distLibP.h"#include "vxfusion/private/distObjLibP.h"#include "vxfusion/private/msgQDistLibP.h"#include "vxfusion/private/distTBufLibP.h"#include "vxfusion/private/distNetLibP.h"#include "vxfusion/private/distPktLibP.h"#include "vxfusion/private/distNameLibP.h"/* defines */#define UNUSED_ARG(x)  if(sizeof(x)) {} /* to suppress compiler warnings */#define XFLOAT 0     /* no ARM cross-endian support for VxWorks 5.x */#define KEY_ARG			65537	/* seed for hash function */#define KEY_CMP_ARG		0	/* not used *//* locals */LOCAL HASH_ID			distNameDbId;LOCAL SEMAPHORE			distNameDbLock;LOCAL SEMAPHORE			distNameDbUpdate;LOCAL SL_LIST			distNameFreeList;LOCAL BOOL			distNameLibInstalled = FALSE;/* local prototypes */LOCAL STATUS		distNameLclAdd (char *name, int nameLen, void *value,					int valueLen, DIST_NAME_TYPE type);LOCAL DIST_NAME_DB_NODE	* distNameLclAddRaw (char *name, int nameLen,			  		     void *value, int valueLen,					     DIST_NAME_TYPE type);LOCAL STATUS		distNameRmtAdd (DIST_NODE_ID nodeId, char *name,					int nameLen, void *value,					int valueLen,					DIST_NAME_TYPE type);LOCAL STATUS		distNameLclRemove (char *name, int nameLen);LOCAL int		distNameHFunc (int elements,                                       DIST_NAME_DB_NODE *pHNode,				       int seed);LOCAL BOOL		distNameHCmp (DIST_NAME_DB_NODE *pMatchHNode,				      DIST_NAME_DB_NODE *pHNode,				      int keyCmpArg);LOCAL DIST_STATUS	distNameInput (DIST_NODE_ID nodeIdSrc,				       DIST_TBUF_HDR *pTBufHdr);LOCAL BOOL		distNameMatchOne (DIST_NAME_DB_NODE *pNode,					  DIST_NAME_MATCH *pMatch);LOCAL BOOL		distNameBurstOne (DIST_NAME_DB_NODE *pNode,					  DIST_NAME_BURST *pBurst);LOCAL uint32_t * distHton64 (uint32_t* hostValue, DIST_NAME_TYPE type);LOCAL uint32_t * distNtoh64 (uint32_t* networkValue, DIST_NAME_TYPE type);/***************************************************************************** distNameLibInit - initialize the distributed name database package (VxFusion option)** Initialize the distributed name database package.  This routine currently* does nothing.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: N/A** NOMANUAL*/void distNameLibInit (void)    {    }/***************************************************************************** distNameInit - initialize the distributed name database (VxFusion option)** This routine allocates space for the distributed name database and* initializes it. The database has 2^<sizeLog2> nodes.** NOTE: This routine is called by distInit(). If you use distInit() to* initialize a node, you need not call distNameInit().** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: OK, if nodes successfully initialized.** SEE ALSO: distLib** NOMANUAL*/STATUS distNameInit    (    int sizeLog2        /* init 2^sizeLog2 elements */    )    {    DIST_NAME_DB_NODE *   nameDb;    STATUS                status;    int                   hashTblSizeLog2;    int                   nameDbNBytes;    int                   nameDbSize;    int                   ix;    if (sizeLog2 < 1)        return (ERROR);    if (distNameLibInstalled == TRUE)        return (OK);    if (hashLibInit () == ERROR)    /* hashLibInit() failed */        return (ERROR);    semBInit (&distNameDbLock, SEM_Q_PRIORITY, SEM_EMPTY);    semBInit (&distNameDbUpdate, SEM_Q_PRIORITY, SEM_EMPTY);    hashTblSizeLog2 = sizeLog2 - 1;    distNameDbId = hashTblCreate (hashTblSizeLog2, distNameHCmp,                                  distNameHFunc, KEY_ARG);    if (distNameDbId == NULL)   /* hashTblCreate() failed */        return (ERROR);    nameDbSize = 1 << sizeLog2;    nameDbNBytes = nameDbSize * sizeof (DIST_NAME_DB_NODE);    nameDb = (DIST_NAME_DB_NODE *) malloc (nameDbNBytes);    if (nameDb == NULL)        {        distStat.memShortage++;         /* out of memory */        hashTblDelete (distNameDbId);   /* delete the hash table */        return (ERROR);                 /* init failed */        }    sllInit (&distNameFreeList);    for (ix = 0; ix < nameDbSize; ix++)        sllPutAtHead (&distNameFreeList, (SL_NODE *) &nameDb[ix]);    /* we are open for requests now */    semGive (&distNameDbLock);    /*     * Add GAP service to table of services.     */    status = distNetServAdd (DIST_PKT_TYPE_DNDB, distNameInput,                             DIST_DNDB_SERV_NAME, DIST_DNDB_SERV_NET_PRIO,                             DIST_DNDB_SERV_TASK_PRIO,                             DIST_DNDB_SERV_TASK_STACK_SZ);    if (status == ERROR)        {        free (nameDb);                 /* free database memory */        hashTblDelete (distNameDbId);  /* delete the hash table */        return (ERROR);                /* init failed */        }    distNameLibInstalled = TRUE;    return (OK);    }/***************************************************************************** distNameAdd - add an entry to the distributed name database (VxFusion option)** This routine adds the name of a specified object, along with its type and * value, to the distributed objects distributed name database. All copies of * the distributed name database within the system are updated.* * The <name> parameter is an arbitrary, null-terminated string with a* maximum of 20 characters, including the null terminator.** The value associated with <name> is located at <value> and is of length* <valueLen>, currently limited to 8 bytes.** By convention, <type> values of less than 0x1000 are reserved by VxWorks;* all other values are user definable.  The following types are pre-defined* in distNameLib.h :** \ts* Type Name | Value | Datum* ----------|------------|------*     T_DIST_MSG_Q |  =  0 | distributed message queue *     T_DIST_NODE | = 16 | node ID*     T_DIST_UINT8 | = 64 | 8-bit unsigned integer*     T_DIST_UINT16 | = 65 | 16-bit unsigned integer*     T_DIST_UINT32 | = 66 | 32-bit unsigned integer*     T_DIST_UINT64 | = 67 | 64-bit unsigned integer*     T_DIST_FLOAT | = 68 | float (32-bit)*     T_DIST_DOUBLE | = 69 | double (64-bit)* \te** The byte-order of pre-defined types is preserved in a* byte-order-heterogeneous network.** The value (and type!) bound to a symbolic name can be changed by calling* distNameAdd() with a new value (and type).** This routine returns OK, even if some nodes on the system do not* respond to the add 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.** NOTE:* If you add a distributed object ID (T_DIST_MSG_Q) to the database,* another reference to the object is built. This reference is stored* in the database. After the return of distNameAdd(), <value> holds the* reference (a new object ID). Use the ID returned by* distNameAdd() each time you want to address the global object bound* to <name>. Subsequent updates of the binding in the database are* transparent. The original object ID specifies exactly the* locally created object.** 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 being added to the database is too long.* \i S_distNameLib_ILLEGAL_LENGTH* The argument <valueLen> is not in the range 1 to 8.* \i S_distNameLib_DATABASE_FULL* The database is full.* \i S_distNameLib_INCORRECT_LENGTH* The argument <valueLen> is incorrect for the pre-defined <type>.* \ie** SEE ALSO: distLib*/STATUS distNameAdd    (    char *          name,       /* name to enter in database  */    void *          value,      /* ptr to value to associate with name */    int             valueLen,   /* size of value in bytes     */    DIST_NAME_TYPE  type        /* type associated with name  */    )    {    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 (valueLen <= 0 || valueLen > DIST_VALUE_MAX_LENGTH)        {        errnoSet (S_distNameLib_ILLEGAL_LENGTH);        return (ERROR);    /* size of value out of range */        }    switch (type)        {        case T_DIST_UINT8:            if (valueLen != 1)                {                errnoSet (S_distNameLib_INCORRECT_LENGTH);                return (ERROR);                }            break;        case T_DIST_UINT16:            if (valueLen != 2)                {                errnoSet (S_distNameLib_INCORRECT_LENGTH);                return (ERROR);                }            break;        case T_DIST_FLOAT:        case T_DIST_UINT32:        case T_DIST_NODE:            if (valueLen != 4)                {                errnoSet (S_distNameLib_INCORRECT_LENGTH);                return (ERROR);                }            break;        case T_DIST_UINT64:        case T_DIST_DOUBLE:            if (valueLen != 8)                {                errnoSet (S_distNameLib_INCORRECT_LENGTH);                return (ERROR);                }        /* case T_DIST_MSG_Q: no checking for complex object type */        }    /* Local name database update. */    if (distNameLclAdd (name, nameLen, value, valueLen, type) == ERROR)        {#ifdef DIST_DIAGNOSTIC        distLog ("distNameAdd: error updating local name database\n");#endif        errnoSet (S_distNameLib_DATABASE_FULL);        return (ERROR);        }    /* Remote name database update. */#ifdef DIST_DIAGNOSTIC    status = distNameRmtAdd (DIST_IF_BROADCAST_ADDR, name, nameLen, value,                             valueLen, type);    if (status == ERROR)        {        /* Local node has binding--one of the remote nodes may not. */        distLog ("distNameAdd: error updating remote name databases\n");

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲三级在线免费| 亚洲综合精品久久| 欧美主播一区二区三区| 另类欧美日韩国产在线| 一区二区三区蜜桃| 日本一区二区三区久久久久久久久不 | 精品国产第一区二区三区观看体验| 波多野结衣亚洲一区| 日韩精品欧美成人高清一区二区| 亚洲视频一区二区在线| 欧美成人精精品一区二区频| 欧美性色欧美a在线播放| 成人少妇影院yyyy| 精品中文字幕一区二区| 亚洲gay无套男同| 亚洲欧美日韩中文字幕一区二区三区 | 另类小说欧美激情| 亚洲第一搞黄网站| 一区二区三区四区精品在线视频 | 国产午夜精品一区二区三区四区| 欧美高清精品3d| 一本色道久久综合狠狠躁的推荐| 成人久久久精品乱码一区二区三区| 狠狠色2019综合网| 久久国产精品99久久久久久老狼| 日韩中文字幕av电影| 亚洲亚洲人成综合网络| 亚洲欧美另类小说视频| 国产精品不卡一区| 国产精品久久久久久久久图文区| 久久久久久久一区| 久久久久九九视频| 久久久99精品免费观看| 久久亚洲综合色| 精品国产乱码久久久久久久久| 91精品国产麻豆| 51久久夜色精品国产麻豆| 欧美日韩亚洲综合一区| 欧美日韩免费在线视频| 欧美午夜精品久久久久久孕妇| 欧美性猛交xxxx黑人交| 欧美熟乱第一页| 91精品国产综合久久小美女| 在线播放视频一区| 日韩网站在线看片你懂的| 欧美成人精品1314www| 精品成人一区二区三区四区| 2014亚洲片线观看视频免费| 久久综合999| 亚洲国产高清在线| 亚洲女同一区二区| 一区二区欧美视频| 亚洲成av人片一区二区三区| 天天av天天翘天天综合网| 亚洲成人黄色影院| 图片区小说区国产精品视频| 热久久国产精品| 国产美女精品人人做人人爽| 粉嫩蜜臀av国产精品网站| 99久久免费国产| 欧美性大战xxxxx久久久| 在线播放91灌醉迷j高跟美女 | 欧美福利视频一区| 日韩一级片在线观看| 久久久亚洲午夜电影| 中文字幕一区二区三区蜜月| 伊人色综合久久天天人手人婷| 婷婷夜色潮精品综合在线| 久久99国内精品| 成人av在线电影| 欧美视频完全免费看| www精品美女久久久tv| 最新国产の精品合集bt伙计| 亚洲v日本v欧美v久久精品| 九九热在线视频观看这里只有精品| 国产aⅴ综合色| 欧美日韩在线播放一区| 欧美一级免费观看| 欧美激情在线观看视频免费| 亚洲婷婷在线视频| 美女脱光内衣内裤视频久久影院| 高清在线观看日韩| 欧美日韩小视频| 日本一区二区三级电影在线观看| 曰韩精品一区二区| 激情成人午夜视频| 在线亚洲+欧美+日本专区| 欧美成人video| 亚洲欧美偷拍三级| 国内外成人在线| 在线一区二区三区做爰视频网站| 在线播放国产精品二区一二区四区| 国产欧美精品区一区二区三区 | 蜜臀91精品一区二区三区| 懂色av一区二区三区免费看| 欧美高清激情brazzers| 中文字幕永久在线不卡| 精品写真视频在线观看| 欧美日韩综合一区| 日韩毛片在线免费观看| 精品一区二区日韩| 欧美日韩一区不卡| 亚洲私人影院在线观看| 久久国产免费看| 欧美日韩亚州综合| 亚洲视频图片小说| 岛国一区二区三区| 欧美成人精品3d动漫h| 亚洲va中文字幕| 色婷婷久久综合| 国产精品丝袜91| 国产综合色在线视频区| 制服丝袜亚洲网站| 亚洲国产综合视频在线观看| 成人av网址在线| 久久久久久综合| 捆绑调教美女网站视频一区| 欧美精品乱码久久久久久按摩| 自拍视频在线观看一区二区| 国产毛片精品国产一区二区三区| 欧美日韩一区二区三区在线| 一区二区三区蜜桃| 色呦呦日韩精品| 亚洲人成网站精品片在线观看| 国产999精品久久| 久久久久国产一区二区三区四区| 久久精品久久综合| 欧美xxxxxxxx| 韩国欧美国产一区| 精品国产免费人成电影在线观看四季 | 久久久国际精品| 久久99国产精品久久99| 欧美一区在线视频| 日本欧美肥老太交大片| 在线播放欧美女士性生活| 日日嗨av一区二区三区四区| 欧美日韩另类国产亚洲欧美一级| 亚洲精品伦理在线| 欧美在线免费观看亚洲| 亚洲精品视频一区| 在线精品视频免费播放| 一区二区三区毛片| 欧美日韩成人在线| 免费亚洲电影在线| 欧美精品一区男女天堂| 国产成人夜色高潮福利影视| 国产午夜精品在线观看| 国产99久久久久久免费看农村| 国产精品毛片a∨一区二区三区| 成人精品在线视频观看| 一区二区三区在线看| 欧美视频中文字幕| 蜜桃视频一区二区三区 | 亚洲综合激情另类小说区| 欧美色综合网站| 日本美女一区二区| 亚洲精品在线观看网站| av在线不卡网| 亚洲综合成人网| 国产精品福利在线播放| 99re热这里只有精品免费视频 | 美美哒免费高清在线观看视频一区二区| 日韩午夜av电影| 成人性生交大片| 亚洲综合视频在线观看| 日韩欧美国产综合| 国产mv日韩mv欧美| 一区二区三区日韩精品| 日韩欧美中文字幕一区| eeuss鲁片一区二区三区| 亚洲一区二区三区小说| 26uuuu精品一区二区| 色先锋资源久久综合| 日本伊人色综合网| 国产精品免费久久| 在线电影院国产精品| 成人性生交大片免费看在线播放| 亚洲午夜在线电影| 精品久久久久久久久久久久久久久 | 亚洲综合色婷婷| 欧美成人精品福利| 99国产精品99久久久久久| 日本女优在线视频一区二区| 欧美激情中文字幕| 欧美巨大另类极品videosbest| 国产精品一品二品| 亚洲妇女屁股眼交7| 国产午夜精品久久久久久免费视 | 欧美精品三级日韩久久| 成人免费视频国产在线观看| 午夜一区二区三区在线观看| 欧美国产欧美综合| 正在播放一区二区| 97精品久久久午夜一区二区三区 | 成人免费看视频| 日韩和欧美一区二区三区| 成人欧美一区二区三区小说| 欧美zozozo| 8x8x8国产精品| 99国产麻豆精品|