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

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

?? symlib.c

?? VxWorks操作系統(tǒng)內(nèi)核源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號(hào):
/* symLib.c - symbol table subroutine library *//* Copyright 1984-2001 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01j,12oct01,jn   fix SPR 7453 - broken API leads to stack corruption - add                 new API from AE (symXXXFind - from symLib.c@@/main/tor3_x/3) 		 and new internal-only API (symXXXGet).  01i,14mar99,jdi  doc: removed refs to config.h and/or configAll.h (SPR 25663).04h,14feb97,dvs  added check if sysTblId is NULL in symFindByValueAndType() 		 (SPR #6876)04g,30oct96,elp  Added syncSymAddRtn, syncSymRemoveRtn function pointers		 and symSAdd().04f,19jun96,ism  added error condition if NULL is passed as symbol table to                    symFindByNameAndType().04e,22oct95,jdi  doc: added buffer size to allocate for the symFindByValue		    routines (SPR 4386).04d,13may95,p_m  added _func_symFindByValue initialization.04c,11jan95,rhp  doc: mention system symbol table global, sysSymTbl (SPR#2575)04b,16sep94,rhp  doc: fuller description of SYM_TYPE (SPR#3538).04a,19may94,dvs  doc'ed problem of standalone image symbol removal (SPR #3199). 03z,23feb93,jdi  doc: fuller description of <group> in symAdd().03y,21jan93,jdi  documentation cleanup for 5.1.03x,01oct92,jcf  biased symFindByValueAndType against xxx.o and gcc2_compiled.03w,18jul92,smb  Changed errno.h to errnoLib.h.03v,14jul92,jmm  added support to symKeyCmpName for matching pointers exactly03u,04jul92,jcf  scalable/ANSI/cleanup effort.03t,22jun92,jmm  removed symFooWithGroup, added parameter to routines instead03s,26may92,rrr  the tree shuffle03r,15may92,jmm  Changed "symFooGroup" to "symFooWithGroup"03q,30apr92,jmm  Added support for group numbers03p,02jan92,gae  used UINT's for value in symFindByValue{AndType}                 for targets in negative address space (e.g. STAR MVP).03o,13dec91,gae  ANSI cleanup.  Made symFindByCName() consistent with other		   symFind* routines.03n,26nov91,llk  added symName() and symNameValueCmp().03m,04oct91,rrr  passed through the ansification filter                  -changed functions to ansi style		  -changed includes to have absolute path from h/		  -changed TINY and UTINY to INT8 and UINT8		  -changed VOID to void		  -changed copyright notice03l,20may91,jdi	 documentation tweak.03k,05apr91,jdi	 documentation -- removed header parens and x-ref numbers;		 doc review by dnw.03j,24mar91,jdi  documentation cleanup.03i,05oct90,dnw  made symFindByCName(), symFindByValueAndType(),		   symFindSymbol(), symInit(), symTblTerminate() be NOMANUAL		 made symFindByValueAndType bias against symbols ending in		   "_text", "_data", "_bss"03h,05oct90,dnw  added forward declarations.03g,29sep90,jcf  documentation.03f,02aug90,jcf  documentation.03e,17jul90,dnw  changed to new objAlloc() call03d,05jul90,jcf  documentation.03c,20jun90,jcf  changed binary semaphore interface		 changed ffs() changed ffsMsb()03b,15apr90,jcf  included sysSymTbl.h.03a,17nov89,jcf  rewritten to use hashLib (2).		  changed interface/funtionality of symDelete/symInit/symCreate.		  documentation.02o,29nov89,llk  added symFindByCName for vxgdb.02n,07jun89,gae  added symDelete.02m,01sep88,gae  documentation.02l,07jul88,jcf  changed malloc to match new declaration.02k,30may88,dnw  changed to v4 names.02j,04nov87,ecs  documentation.02i,16aug87,gae  added parm. to symEach() and made it void.02h,07jul87,ecs  added symFindType.		 optimized symEach, symValFind, and symFind.02g,02apr87,ecs  added include of strLib.c.02f,23mar87,jlf  documentation		 changed memAllocate's to malloc's.02e,21dec86,dnw  changed to not get include files from default directories.02d,04sep86,jlf  minor documentation02c,01jul86,jlf  minor documentation02b,05jun86,dnw  changed SYMTAB to have pointer to SYMBOL array instead of		   having it imbedded in SYMTAB structure.02a,11oct85,dnw  changed to dynamically allocate space for symbol strings.		   Note change to symCreate call which now takes max number of		   symbols instead of number of bytes in table.		 De-linted.01j,21jul85,jlf  documentation.01i,11jun85,rdc  added variable length symbols.01h,08sep84,jlf  added comments and copyright01g,13aug84,ecs  changed status code EMPTY_SYMBOL_TABLE to SYMBOL_NOT_FOUND.01f,08aug84,ecs  added calls to setStatus to symAdd, symFind, and symValFind.01e,27jun84,ecs  changed symAdd & symValFind so that names in symbol tables		   are now EOS terminated.01d,26jun84,dnw  fixed bug in symValFind of potentially copying too many		   bytes to user's name buffer.01c,18jun84,jlf  added symEach and symValFind.01b,03jun84,dnw  added symCreate.		 changed symFind to search backwards in table to find most		   recent of multiply defined symbols.		 moved typedefs of SYMBOL and SYMTAB to symLib.h.		 added LINTLIBRARY and various coercions for lint.01a,03aug83,dnw  written*//*DESCRIPTIONThis library provides facilities for managing symbol tables.  A symboltable associates a name and type with a value.  A name is simply anarbitrary, null-terminated string.  A symbol type is a small integer(typedef SYM_TYPE), and its value is a pointer.  Though commonly usedas the basis for object loaders, symbol tables may be used wheneverefficient association of a value with a name is needed.If you use the symLib subroutines to manage symbol tables local toyour own applications, the values for SYM_TYPE objects are completelyarbitrary; you can use whatever one-byte integers are appropriate foryour application.If you use the symLib subroutines to manipulate the VxWorks systemsymbol table (whose ID is recorded in the global \f3sysSymTbl\f1), thevalues for SYM_TYPE are SYM_UNDF, SYM_LOCAL, SYM_GLOBAL, SYM_ABS,SYM_TEXT, SYM_DATA, SYM_BSS, and SYM_COMM (defined in symbol.h).Tables are created with symTblCreate(), which returns a symbol table ID.This ID serves as a handle for symbol table operations, including theadding to, removing from, and searching of tables.  All operations on asymbol table are interlocked by means of a mutual-exclusion semaphorein the symbol table structure.  Tables are deleted with symTblDelete().Symbols are added to a symbol table with symAdd().  Each symbol in thesymbol table has a name, a value, and a type.  Symbols are removed from asymbol table with symRemove().Symbols can be accessed by either name or value.  The routinesymFindByName() searches the symbol table for a symbol with aspecified name.  The routine symByValueFind() finds a symbol with aspecified value or, if there is no symbol with the same value, thesymbol in the table with the next lower value than the specifiedvalue.  The routines symFindByNameAndType() andsymByValueAndTypeFind() allow the symbol type to be used as anadditional criterion in the searches.The routines symFindByValue() and symFindByValueAndType() areobsolete.  They are replaced by the routines symByValueFind() andsymByValueAndTypeFind().Symbols in the symbol table are hashed by name into a hash table forfast look-up by name, e.g., by symFindByName().  The size of the hashtable is specified during the creation of a symbol table.  Look-ups byvalue, e.g., symByValueFind(), must search the table linearly; theselook-ups can thus be much slower.The routine symEach() allows each symbol in the symbol table to beexamined by a user-specified function.Name clashes occur when a symbol added to a table is identical in nameand type to a previously added symbol.  Whether or not symbol tablescan accept name clashes is set by a parameter when the symbol table iscreated with symTblCreate().  If name clashes are not allowed,symAdd() will return an error if there is an attempt to add a symbolwith identical name and type.  If name clashes are allowed, addingmultiple symbols with the same name and type will be permitted.  Insuch cases, symFindByName() will return the value most recently added,although all versions of the symbol can be found by symEach().The system symbol table (\f3sysSymTbl\f1) allows name clashes.See the VxWorks Programmmer's Guide for more information aboutconfiguration, intialization, and use of the system symbol table.INTERNALStatic symbol tables are initialized with symTblInit(), which operatesidentically with symTblCreate() without allocating the symbol table.Static symbol tables are terminated with symTblTerminate(), which operatesidentically with symTblDelete() without deallocating the symbol table.Symbols may be separately allocated, initialized, and added to the symboltable.  symInit() initializes an existing uninitialized SYMBOL structure.symAlloc() allocates a SYMBOL structure from the memory partitionspecified to symTblCreate(), and then initializes it.  symTblAdd() adds anexisting initialized SYMBOL structure to a symbol table.  The usualsymAdd() function invokes both symAlloc() and symTblAdd().Symbols are deallocated by symFree().  Symbols still resident in a symboltable cannot be deallocated.INCLUDE FILES: symLib.hSEE ALSO: loadLib *//* LINTLIBRARY */#include "vxWorks.h"#include "errnoLib.h"#include "objLib.h"#include "classLib.h"#include "symLib.h"#include "semLib.h"#include "memLib.h"#include "memPartLib.h"#include "hashLib.h"#include "string.h"#include "stdlib.h"#include "sysSymTbl.h"#include "private/funcBindP.h"IMPORT int ffsMsb (int bitfield);#define SYM_HFUNC_SEED	1370364821		/* magic seed */typedef struct		/* RTN_DESC - routine descriptor */    {    FUNCPTR	routine;	/* user routine passed to symEach() */    int		routineArg;	/* user routine arg passed to symEach() */    } RTN_DESC;/* local variables */LOCAL OBJ_CLASS symTblClass;/* global variables */CLASS_ID symTblClassId = &symTblClass;int mutexOptionsSymLib = SEM_Q_FIFO | SEM_DELETE_SAFE;UINT16 symGroupDefault = 0;FUNCPTR syncSymAddRtn = (FUNCPTR) NULL;FUNCPTR syncSymRemoveRtn = (FUNCPTR) NULL;/* forward static functions */ static BOOL symEachRtn (SYMBOL *pSymbol, RTN_DESC *pRtnDesc);static int symHFuncName (int elements, SYMBOL *pSymbol, int seed);static BOOL symKeyCmpName (SYMBOL *pMatchSymbol, SYMBOL *pSymbol,			   int mask);static BOOL symNameValueCmp (char *name, int val, SYM_TYPE type, int pSym);/********************************************************************************* symLibInit - initialize the symbol table library** This routine initializes the symbol table package.  If the configuration* macro INCLUDE_SYM_TBL is defined, symLibInit() is called by the root task,* usrRoot(), in usrConfig.c.** RETURNS: OK, or ERROR if the library could not be initialized.*/STATUS symLibInit (void)    {    /* avoid direct coupling with symLib with these global variables */    _func_symFindSymbol = (FUNCPTR) symFindSymbol;    _func_symNameGet    = (FUNCPTR) symNameGet;    _func_symValueGet   = (FUNCPTR) symValueGet;    _func_symTypeGet    = (FUNCPTR) symTypeGet;       /*      * XXX JLN The functions symFindByValueAndType and symFindByValue     * are obsolete and should not be used.  They remain (as functions     * and as function pointers) for backwards compatibility only.     * The function pointers should be removed when all uses are     * removed from vxWorks.  The functions themselves must remain     * as long as required for backwards compatibility.     */    _func_symFindByValueAndType = (FUNCPTR) symFindByValueAndType;     _func_symFindByValue        = (FUNCPTR) symFindByValue;    /* initialize the symbol table class structure */    return (classInit (symTblClassId, sizeof (SYMTAB), OFFSET (SYMTAB, objCore),		       (FUNCPTR) symTblCreate, (FUNCPTR) symTblInit,		       (FUNCPTR) symTblDestroy));    }/********************************************************************************* symTblCreate - create a symbol table** This routine creates and initializes a symbol table with a hash table of a* specified size.  The size of the hash table is specified as a power of two.* For example, if <hashSizeLog2> is 6, a 64-entry hash table is created.** If <sameNameOk> is FALSE, attempting to add a symbol with* the same name and type as an already-existing symbol results in an error.** Memory for storing symbols as they are added to the symbol table will be* allocated from the memory partition <symPartId>.  The ID of the system* memory partition is stored in the global variable `memSysPartId', which* is declared in memLib.h.** RETURNS: Symbol table ID, or NULL if memory is insufficient.*/SYMTAB_ID symTblCreate    (    int     hashSizeLog2,       /* size of hash table as a power of 2 */    BOOL    sameNameOk,         /* allow 2 symbols of same name & type */    PART_ID symPartId           /* memory part ID for symbol allocation */    )    {    SYMTAB_ID symTblId = (SYMTAB_ID) objAlloc (symTblClassId);    if (symTblId != NULL)	{	symTblId->nameHashId = hashTblCreate (hashSizeLog2,					      (FUNCPTR) symKeyCmpName,					      (FUNCPTR) symHFuncName,					      SYM_HFUNC_SEED);	if (symTblId->nameHashId == NULL)	/* hashTblCreate failed? */	    {	    objFree (symTblClassId, (char *) symTblId);	    return (NULL);	    }	if (symTblInit (symTblId, sameNameOk, symPartId,			symTblId->nameHashId) != OK)	    {	    hashTblDelete (symTblId->nameHashId);	    objFree (symTblClassId, (char *) symTblId);	    return (NULL);	    }	}    return (symTblId);				/* return the symbol table ID */    }/********************************************************************************* symTblInit - initialize a symbol table** Initialize a symbol table.  Any symbols currently in the table will be lost.* The specified hash table ID and memory partition ID must already be* initialized.** RETURNS: OK, or ERROR if initialization failed.** NOMANUAL*/STATUS symTblInit    (    SYMTAB  *pSymTbl,           /* ptr to symbol table to initialize */    BOOL    sameNameOk,         /* two symbols of same name and type allowed */    PART_ID symPartId,          /* partition from which to allocate symbols */    HASH_ID symHashTblId        /* ID of an initialized hash table */    )    {    if ((OBJ_VERIFY (symHashTblId, hashClassId) != OK) ||        (semMInit (&pSymTbl->symMutex, mutexOptionsSymLib) != OK))	{	return (ERROR);	}    pSymTbl->sameNameOk = sameNameOk;		/* name clash policy */    pSymTbl->nsymbols   = 0;			/* initial number of syms */    pSymTbl->nameHashId = symHashTblId;		/* fill in hash table ID */    pSymTbl->symPartId  = symPartId;		/* fill in mem partition ID */    /* initialize core */    objCoreInit (&pSymTbl->objCore, symTblClassId);    return (OK);    }/********************************************************************************* symTblDelete - delete a symbol table** This routine deletes a specified symbol table.  It deallocates all* associated memory, including the hash table, and marks the table as* invalid.** Deletion of a table that still contains symbols results in ERROR.* Successful deletion includes the deletion of the internal hash table and* the deallocation of memory associated with the table.  The table is marked* invalid to prohibit any future references.** RETURNS: OK, or ERROR if the symbol table ID is invalid.*/STATUS symTblDelete    (    SYMTAB_ID symTblId          /* ID of symbol table to delete */    )    {    return (symTblDestroy (symTblId, TRUE));    }/********************************************************************************* symTblTerminate - terminate a symbol table** The specified symbol table is terminated if no symbols are resident.* Otherwise, ERROR is returned.** RETURNS: OK, or ERROR if invalid symbol table ID, or symbols still in table.** NOMANUAL*/STATUS symTblTerminate    (    SYMTAB_ID symTblId          /* ID of symbol table to delete */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲手机成人高清视频| 成人app网站| 日韩国产在线一| 亚洲福利视频三区| 一区二区三区中文在线| 一个色综合网站| 一级特黄大欧美久久久| 亚洲最大色网站| 一级日本不卡的影视| 亚洲一二三区在线观看| 婷婷综合另类小说色区| 日本欧美大码aⅴ在线播放| 日韩高清不卡一区二区三区| 日韩和欧美一区二区三区| 老司机精品视频在线| 国产在线不卡视频| 成人在线视频一区二区| 92精品国产成人观看免费| 欧美最猛性xxxxx直播| 精品视频一区三区九区| 56国语精品自产拍在线观看| 日韩欧美国产综合| 精品va天堂亚洲国产| 国产拍欧美日韩视频二区| 国产精品全国免费观看高清| 亚洲欧美日韩小说| 日韩高清在线观看| 国产精品一线二线三线精华| 99久久精品国产一区二区三区 | 91亚洲资源网| 欧美亚洲日本国产| 日韩欧美一卡二卡| 久久影院视频免费| 亚洲男人的天堂在线观看| 亚洲超碰精品一区二区| 国产一区二区免费看| 99久久777色| 欧美一区午夜视频在线观看| 亚洲国产高清aⅴ视频| 亚洲高清视频中文字幕| 国产伦理精品不卡| 日本高清无吗v一区| 欧美成人精品3d动漫h| 国产精品久久久久久久久久久免费看| 亚洲综合色视频| 久久精品国内一区二区三区| 99国产欧美久久久精品| 欧美一区二区啪啪| 亚洲欧美中日韩| 日韩av在线播放中文字幕| 丰满白嫩尤物一区二区| 8v天堂国产在线一区二区| 国产日韩欧美不卡| 日韩福利电影在线| 色综合久久88色综合天天免费| 欧美日韩国产小视频| 国产视频一区二区在线| 午夜精品福利在线| 99久久精品国产网站| 欧美一区二区三区四区在线观看| 国产精品乱码人人做人人爱| 视频一区免费在线观看| 色一情一伦一子一伦一区| 国产亚洲欧洲997久久综合| 亚洲成精国产精品女| 成人视屏免费看| 欧美大白屁股肥臀xxxxxx| 一区二区在线免费| 国产丶欧美丶日本不卡视频| 制服视频三区第一页精品| 亚洲黄色片在线观看| 成人免费高清视频| 欧美精品一区二区不卡| 日韩电影在线免费观看| 欧美综合久久久| 亚洲免费视频中文字幕| 成人午夜免费av| 久久久综合精品| 另类小说综合欧美亚洲| 91超碰这里只有精品国产| 一区二区视频免费在线观看| 成人h动漫精品| 久久久久久久久97黄色工厂| 极品瑜伽女神91| 91精品国产全国免费观看| 亚洲成国产人片在线观看| 91极品视觉盛宴| 亚洲欧洲av在线| 成人黄动漫网站免费app| 国产亲近乱来精品视频 | 99久久精品99国产精品| 久久久99久久| 国产呦精品一区二区三区网站| 欧美一级一区二区| 午夜精品一区二区三区三上悠亚| 色哟哟欧美精品| 亚洲激情网站免费观看| 色婷婷av一区二区三区大白胸| 中文字幕日韩av资源站| 99re亚洲国产精品| 亚洲欧美日韩在线播放| 色偷偷成人一区二区三区91| 亚洲欧美另类图片小说| 在线免费不卡视频| 亚洲宅男天堂在线观看无病毒| 在线精品视频免费播放| 亚洲国产美国国产综合一区二区| 欧美亚洲综合色| 亚洲va韩国va欧美va精品| 88在线观看91蜜桃国自产| 麻豆精品蜜桃视频网站| 精品国产sm最大网站| 国产mv日韩mv欧美| 最新中文字幕一区二区三区| 日本久久精品电影| 婷婷久久综合九色综合伊人色| 欧美日韩国产高清一区| 久久精品国产77777蜜臀| 久久久另类综合| 成人妖精视频yjsp地址| 中文字幕一区二区不卡| 日本高清不卡一区| 丝袜诱惑制服诱惑色一区在线观看| 欧美精品粉嫩高潮一区二区| 老司机精品视频在线| 国产亚洲1区2区3区| 99久久婷婷国产综合精品| 亚洲综合一区二区三区| 欧美男人的天堂一二区| 极品美女销魂一区二区三区| 国产欧美1区2区3区| 91九色02白丝porn| 久久精品国产亚洲aⅴ| 国产欧美精品日韩区二区麻豆天美| 一本一道波多野结衣一区二区 | 色综合天天综合在线视频| 亚洲午夜免费视频| 日韩精品一区在线| 99久久久精品免费观看国产蜜| 午夜久久福利影院| 欧美经典一区二区| 欧美体内she精高潮| 精品中文av资源站在线观看| 中文字幕制服丝袜成人av| 欧美欧美欧美欧美首页| 国产二区国产一区在线观看| 一区二区高清免费观看影视大全| 精品成人一区二区三区四区| 色综合天天综合给合国产| 青青草精品视频| 国产无人区一区二区三区| 欧洲精品在线观看| 国产精品中文欧美| 午夜精品爽啪视频| 欧美极品xxx| 日韩一区二区三区免费看 | 视频一区欧美精品| 国产精品二三区| 欧美一区二区精品久久911| 成人美女在线视频| 欧美a一区二区| 亚洲欧美日韩国产综合在线| 精品成人佐山爱一区二区| 欧美性感一区二区三区| 成人国产精品免费| 捆绑调教一区二区三区| 亚洲一区视频在线观看视频| 久久久三级国产网站| 欧美人牲a欧美精品| 91视频www| 高清国产午夜精品久久久久久| 青青草精品视频| 亚洲高清中文字幕| 亚洲色图19p| 国产女人水真多18毛片18精品视频 | 国产一区二区三区电影在线观看| 亚洲永久精品国产| 日韩一区在线看| 2024国产精品| 欧美一区二区免费| 精品视频色一区| 在线视频亚洲一区| 91小宝寻花一区二区三区| 国内成人免费视频| 免费精品视频在线| 日韩国产精品久久久| 亚洲精品国产无套在线观| 国产精品久久久久久久久图文区 | 首页国产欧美日韩丝袜| 亚洲美女在线一区| 成人欧美一区二区三区| 亚洲国产精品精华液2区45| 亚洲精品在线免费观看视频| 7777精品伊人久久久大香线蕉超级流畅| 91久久国产最好的精华液| 色综合 综合色| 91麻豆文化传媒在线观看| 国产成a人亚洲精品| 国产999精品久久久久久绿帽| 韩国精品一区二区|