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

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

?? 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一区二区三区免费野_久草精品视频
天天色综合成人网| 中文字幕精品一区| 奇米四色…亚洲| 欧美一区二区啪啪| 国产麻豆视频精品| 日韩理论片一区二区| 91蜜桃传媒精品久久久一区二区| 一区二区三区小说| 在线综合亚洲欧美在线视频| 九九热在线视频观看这里只有精品 | 亚洲男人的天堂一区二区| 色综合中文字幕| 亚洲成av人片观看| 久久久综合精品| 色香蕉成人二区免费| 亚洲成a人片在线观看中文| 精品国产露脸精彩对白| 成人久久视频在线观看| 亚洲小说欧美激情另类| 日韩欧美亚洲一区二区| 波多野结衣中文字幕一区| 亚洲国产精品久久不卡毛片| 337p日本欧洲亚洲大胆精品| 91香蕉视频污| 久久99久久久久久久久久久| 国产精品视频一区二区三区不卡| 欧美日韩在线三级| 在线观看免费视频综合| 日本在线不卡一区| 国产精品久久久久久久久免费樱桃 | 成人的网站免费观看| 亚州成人在线电影| 中文一区二区在线观看| 欧美一区二区三区男人的天堂| 不卡一区在线观看| 九色综合国产一区二区三区| 一区二区三区四区精品在线视频| 欧美本精品男人aⅴ天堂| 色哟哟一区二区在线观看| 国产剧情av麻豆香蕉精品| 亚洲电影一级黄| 成人免费一区二区三区在线观看 | 美女脱光内衣内裤视频久久影院| 综合色天天鬼久久鬼色| 2014亚洲片线观看视频免费| 欧美日韩国产123区| www.日韩在线| 国产最新精品免费| 日韩激情一二三区| 亚洲综合激情另类小说区| 亚洲国产精品精华液ab| 欧美成人高清电影在线| 欧美日韩亚洲综合| 日本精品一区二区三区高清| 成人污污视频在线观看| 麻豆成人久久精品二区三区红| 怡红院av一区二区三区| 欧美激情一区二区在线| 欧美精品一区二| 日韩亚洲欧美中文三级| 欧美日韩国产区一| 在线观看视频一区二区| 色94色欧美sute亚洲线路一ni| 国产91精品免费| 成人一区二区在线观看| 国产精品88888| 国产一区中文字幕| 国产一区二区网址| 国产精一品亚洲二区在线视频| 全国精品久久少妇| 免费在线视频一区| 日本在线不卡视频一二三区| 视频一区二区不卡| 三级久久三级久久久| 日韩黄色片在线观看| 日本不卡一二三区黄网| 亚洲一区二区四区蜜桃| 亚洲午夜久久久久中文字幕久| 亚洲欧美日韩在线不卡| 亚洲人成在线播放网站岛国| 亚洲欧洲无码一区二区三区| 亚洲色图都市小说| 亚洲卡通动漫在线| 午夜不卡av免费| 久久精品国产秦先生| 一本高清dvd不卡在线观看| 99久久精品免费精品国产| 色综合久久久久综合体 | 欧美午夜精品久久久| 欧美丝袜自拍制服另类| 欧美色窝79yyyycom| 欧美精品aⅴ在线视频| 日韩精品一区二区三区在线观看| 精品国产伦一区二区三区免费| 久久免费美女视频| 国产精品福利av| 亚洲电影在线播放| 寂寞少妇一区二区三区| 成人免费毛片嘿嘿连载视频| 91亚洲国产成人精品一区二区三 | 国产欧美精品国产国产专区| 国产精品久久久久久一区二区三区 | 亚洲色图另类专区| 日韩国产欧美三级| 国产精品一区二区黑丝| 91麻豆swag| 日韩精品在线网站| 亚洲欧美综合色| 视频一区在线视频| 成人精品电影在线观看| 欧美视频中文字幕| 国产午夜精品一区二区 | 国产精品久久久久久久久免费丝袜| 一区二区免费在线播放| 久久99精品国产麻豆婷婷| 成人h版在线观看| 911精品国产一区二区在线| 久久精品亚洲麻豆av一区二区| 怡红院av一区二区三区| 国产一区中文字幕| 欧美日韩mp4| 日本一区二区成人| 天堂一区二区在线| www.欧美日韩| 日韩欧美电影一区| 一区二区三区欧美激情| 国产一区二区精品在线观看| 欧美视频一区二区三区四区| 国产欧美日韩综合精品一区二区| 午夜不卡av免费| 91视频一区二区| 国产视频一区在线播放| 日韩成人av影视| 欧美少妇xxx| 亚洲日本中文字幕区| 国产成人亚洲精品青草天美 | 精品少妇一区二区三区日产乱码 | 欧美高清一级片在线| 成人欧美一区二区三区小说| 国产一区亚洲一区| 欧美一区二区三区日韩视频| 亚洲午夜在线观看视频在线| 成人网在线免费视频| 欧美mv和日韩mv的网站| 日韩国产在线观看一区| 亚洲精品一区二区在线观看| 日韩中文字幕一区二区三区| 色女孩综合影院| 国产精品麻豆欧美日韩ww| 国产一区二区三区黄视频| 欧美电影免费提供在线观看| 亚洲成人免费在线观看| 欧美三级日韩在线| 亚洲国产精品一区二区尤物区| 91美女视频网站| 亚洲精品国产品国语在线app| 9色porny自拍视频一区二区| 欧美韩国日本一区| 成人av影院在线| 中文字幕一区在线| a级高清视频欧美日韩| 中文字幕一区二区三区不卡| 成人免费的视频| 国产精品国产馆在线真实露脸| 成人精品视频.| 国产精品嫩草久久久久| 99这里都是精品| 国产精品久久久久一区二区三区共| 国产毛片一区二区| 国产欧美日韩综合精品一区二区| 国产电影一区在线| 亚洲欧洲精品一区二区精品久久久 | 91老师片黄在线观看| 一区二区三区四区蜜桃| 欧美日本韩国一区二区三区视频| 亚洲第一福利视频在线| 欧美一区二区在线免费观看| 久久精品二区亚洲w码| 精品91自产拍在线观看一区| 国产激情偷乱视频一区二区三区| 国产精品全国免费观看高清 | 久久成人免费日本黄色| 精品国产乱码久久久久久影片| 国产原创一区二区| 亚洲欧美综合在线精品| 欧美猛男男办公室激情| 激情六月婷婷久久| 国产精品看片你懂得| 欧洲一区二区三区在线| 久久精品国产在热久久| 日本一区二区三区高清不卡| 色综合色综合色综合 | 国产一区激情在线| 国产精品二区一区二区aⅴ污介绍| 在线观看亚洲专区| 久久国产福利国产秒拍| 亚洲人成在线播放网站岛国| 欧美卡1卡2卡| 岛国精品在线观看| 亚洲成人免费看|