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

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

?? modulelib.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號(hào):
** moduleCreateHookDelete - delete a previously added module create hook routine** This routine removes a specified routine from the list of* routines to be called at each moduleCreate() call.** RETURNS: OK, or ERROR if the routine is not in the table of module create* hook routines.** SEE ALSO: moduleCreateHookAdd()*/STATUS moduleCreateHookDelete    (    FUNCPTR     moduleCreateHookRtn  /* routine called when module is added */    )    {    MODCREATE_HOOK * pNode;	         /* hook node */    /*     * Step through the list of create hooks until we find a match     */    for (pNode = (MODCREATE_HOOK *) DLL_FIRST (&moduleCreateHookList);	 pNode != NULL;	 pNode = (MODCREATE_HOOK *) DLL_NEXT ((DL_NODE *) pNode))	{	if (pNode->func == moduleCreateHookRtn)	    {	    	    /*	     * We've found the node, delete it and free the space	     */	    dllRemove (&moduleCreateHookList, (DL_NODE *) pNode);	    free (pNode);	    return (OK);	    }	}    /*     * We didn't find the node, return ERROR     */    errnoSet (S_moduleLib_HOOK_NOT_FOUND);    return (ERROR);    }/******************************************************************************** moduleFindByName - find a module by name* * This routine searches for a module with a name matching <moduleName>.* * RETURNS: MODULE_ID, or NULL if no match is found.*/MODULE_ID moduleFindByName    (    char *	 moduleName	       /* name of module to find */    )    {    MODULE_ID	 moduleId;    char         splitName [NAME_MAX]; /* name part of moduleName */    char         splitPath [PATH_MAX]; /* path part of moduleName */    /* get just the name component of moduleName */    pathSplit (moduleName, splitPath, splitName);    /*     * Go through the module list, check each module against     * the search parameter(s).     */    semTake (moduleListSem, WAIT_FOREVER);    for (moduleId = NODE_TO_ID (DLL_LAST (&moduleList));	 moduleId != NULL;	 moduleId = NODE_TO_ID (DLL_PREVIOUS (&moduleId->moduleNode)))	{		/*	 * Found the right one, give the list semaphore, return the module id	 */	if (strcmp (moduleId->name, splitName) == 0)	    {	    semGive (moduleListSem);	    return (moduleId);	    }	}    /*     * Give back the module list semaphore, and return NULL (nothing found)     */    semGive (moduleListSem);    return (NULL);    }/******************************************************************************** moduleFindByNameAndPath - find a module by file name and path* * This routine searches for a module with a name matching <moduleName>* and path matching <pathName>.* * RETURNS: MODULE_ID, or NULL if no match is found.*/MODULE_ID moduleFindByNameAndPath    (    char * 	moduleName,		/* file name to find */    char * 	pathName		/* path name to find */    )    {    MODULE_ID 	moduleId;    /*     * Go through the module list, check each module against     * the search parameter(s).  Take the module list semaphore first.     */    semTake (moduleListSem, WAIT_FOREVER);        for (moduleId = NODE_TO_ID (DLL_LAST (&moduleList));	 moduleId != NULL;	 moduleId = NODE_TO_ID (DLL_PREVIOUS (&moduleId->moduleNode)))	{		/*	 * Found the right one, give the semaphore, return the module id	 */	if ((strcmp (moduleId->name, moduleName) == 0) &&	    (strcmp (moduleId->path, pathName) == 0))	    {	    semGive (moduleListSem);	    return (moduleId);	    }	}    semGive (moduleListSem);    return (NULL);    }/******************************************************************************** moduleFindByGroup - find a module by group number* * This routine searches for a module with a group number matching* <groupNumber>.* * RETURNS: MODULE_ID, or NULL if no match is found.*/MODULE_ID moduleFindByGroup    (    int 	groupNumber		/* group number to find */    )    {    MODULE_ID 	moduleId;    /*     * Go through the module list, check each module against     * the search parameter(s).  Take the list semaphore first     */    semTake (moduleListSem, WAIT_FOREVER);    for (moduleId = NODE_TO_ID (DLL_LAST (&moduleList));	 moduleId != NULL;	 moduleId = NODE_TO_ID (DLL_PREVIOUS (&moduleId->moduleNode)))	{		/*	 * Found the right one, give the semaphore, return the module id	 */	if (groupNumber == moduleId->group)	    {	    semGive (moduleListSem);	    return (moduleId);	    }	}    semGive (moduleListSem);    return (NULL);    }/******************************************************************************** moduleEach - call a routine to examine each loaded module* * This routine calls a user-supplied routine to examine each module.* The routine should be declared as follows:* * .CS*       BOOL routine*           (*           MODULE_ID	 moduleId,    /@ The associated module @/* 	    int		 userArg      /@ An arbitrary user-supplied argument @/*           )* .CE* * The user routine should return TRUE if moduleEach() is to continue* calling it for the remaining modules, or FALSE if moduleEach() should* exit.* * RETURNS: NULL if all modules were examined, or the module ID that* caused the support routine to return FALSE.* * NOMANUAL*/MODULE_ID moduleEach    (    FUNCPTR 	routine,	/* The routine to call */    int		userArg		/* arbitrary user-supplied argument */    )    {    MODULE_ID	 moduleId;    semTake (moduleListSem, WAIT_FOREVER);    for (moduleId = NODE_TO_ID (DLL_LAST (&moduleList));	 moduleId != NULL;	 moduleId = NODE_TO_ID (DLL_PREVIOUS (&moduleId->moduleNode)))	{	/*	 * If the user routine returns false, then return the current	 * module ID	 */	if ((* routine) (moduleId, userArg) == FALSE)	    {	    semGive (moduleListSem);	    return (moduleId);	    }	}    /* Give back the module list semaphore */    semGive (moduleListSem);    return (NULL);    }/******************************************************************************** moduleIdListGet - get a list of loaded modules* * This routine provides the calling task with a list of all loaded* object modules.  An unsorted list of module IDs for no more than* <maxModules> modules is put into <idList>.* * RETURNS: The number of modules put into the ID list, or ERROR.*/int moduleIdListGet    (    MODULE_ID *	idList,		/* array of module IDs to be filled in */    int		maxModules	/* max modules <idList> can accommodate */    )    {    MODULE_ID 	moduleId;	/* current module */    int		count = 0;	/* count of modules put into array */    semTake (moduleListSem, WAIT_FOREVER);        for (moduleId = NODE_TO_ID (DLL_FIRST (&moduleList));	 moduleId != NULL && count < maxModules;	 moduleId = NODE_TO_ID (DLL_NEXT (&moduleId->moduleNode)))	{	idList [count++] = moduleId;	}    semGive (moduleListSem);        return (count);    }/******************************************************************************** moduleSegInfoGet - get information about the segments of a module** This routine fills in a MODULE_SEG_INFO struct with information about the* specified module's segments.* * RETURNS: OK or ERROR*/LOCAL STATUS moduleSegInfoGet    (    MODULE_ID	  	moduleId,	/* module to query */    MODULE_SEG_INFO *	pModSegInfo	/* ptr to module segment info struct */    )    {    SEGMENT_ID		segId;		/* loop variable */    bzero ((char *) pModSegInfo, sizeof (*pModSegInfo));    for (segId = moduleSegFirst (moduleId);	 segId != NULL;	 segId = moduleSegNext (segId))	{	switch (segId->type)	    {	    case SEGMENT_TEXT:		pModSegInfo->textAddr = segId->address;		pModSegInfo->textSize = segId->size;		break;	    case SEGMENT_DATA:		pModSegInfo->dataAddr = segId->address;		pModSegInfo->dataSize = segId->size;		break;	    case SEGMENT_BSS:		pModSegInfo->bssAddr = segId->address;		pModSegInfo->bssSize = segId->size;		break;	    }	} /* for loop end */        return (OK);    }/******************************************************************************** moduleInfoGet - get information about an object module* * This routine fills in a MODULE_INFO structure with information about the* specified module.* * RETURNS: OK or ERROR.*/STATUS moduleInfoGet    (    MODULE_ID	  moduleId,	/* module to return information about */    MODULE_INFO * pModuleInfo	/* pointer to module info struct */    )    {    /* Validate module id */    if (OBJ_VERIFY (moduleId, moduleClassId) != OK)	{	return (ERROR);	}    strcpy (pModuleInfo->name, moduleId->name);    pModuleInfo->format = moduleId->format;    pModuleInfo->group = moduleId->group;    return (moduleSegInfoGet (moduleId, &pModuleInfo->segInfo));    }/******************************************************************************** moduleCheckSegment - compare the current checksum to the recorded checksum*/LOCAL BOOL moduleCheckSegment    (    SEGMENT_ID	segmentId	/* the segment */    )    {    u_short 		cksum;    extern u_short 	checksum();    /*     * Compute the new checksum, and compare it to the     * old one.     */    cksum = checksum (segmentId->address, segmentId->size);    if (cksum != segmentId->checksum)	{	errnoSet (S_moduleLib_BAD_CHECKSUM);	return (FALSE);	}    else	return (TRUE);    }/******************************************************************************** moduleCheckOne - verify checksums on a specific module*/LOCAL BOOL moduleCheckOne    (    MODULE_ID 	moduleId,	/* module to check */    int		options		/* options */    )    {    SEGMENT_ID	segmentId;    STATUS	returnValue = TRUE;    /* If no options are set, default to checking text segments */    if (options == 0)        options = MODCHECK_TEXT;    for (segmentId = moduleSegFirst (moduleId);	 segmentId != NULL;	 segmentId = moduleSegNext (segmentId))	{	if (segmentId->type & options)	    {	    if (moduleCheckSegment (segmentId) == FALSE)		{		if (!(options & MODCHECK_NOPRINT))		    {		    printf ("Checksum error in segment type %d, ",			    segmentId->type);		    printf ("module %#x (%s)\n", (int) moduleId,			    moduleId->name);		    }		returnValue = FALSE;		}	    }	}    return (returnValue);    }    /******************************************************************************** moduleCheck - verify checksums on all modules** This routine verifies the checksums on the segments of all loaded* modules.  If any of the checksums are incorrect, a message is printed to* the console, and the routine returns ERROR.** By default, only the text segment checksum is validated.** Bits in the <options> parameter may be set to control specific checks:* .iP MODCHECK_TEXT* Validate the checksum for the TEXT segment (default).* .iP MODCHECK_DATA* Validate the checksum for the DATA segment.* .iP MODCHECK_BSS* Validate the checksum for the BSS segment.* .iP MODCHECK_NOPRINT* Do not print a message (moduleCheck() still returns ERROR on failure.)* .LP* See the definitions in moduleLib.h** RETURNS: OK, or ERROR if the checksum is invalid.*/STATUS moduleCheck    (    int options			/* validation options */    )    {    if (moduleEach (moduleCheckOne, options) == NULL)        return (OK);    else        return (ERROR);    }/******************************************************************************** moduleNameGet - get the name associated with a module ID** This routine returns a pointer to the name associated with a module ID.** RETURNS: A pointer to the module name, or NULL if the module ID is invalid.*/char * moduleNameGet    (    MODULE_ID moduleId    )    {    if (OBJ_VERIFY (moduleId, moduleClassId) != OK)  /* validate module id */	{	return (NULL);	}    return (moduleId->name);    }/******************************************************************************** moduleFlagsGet - get the flags associated with a module ID** This routine returns the flags associated with a module ID.** RETURNS: The flags associated with the module ID, or NULL if the module ID* is invalid.*/int moduleFlagsGet    (    MODULE_ID moduleId    )    {    if (OBJ_VERIFY (moduleId, moduleClassId) != OK)  /* validate module id */	{	return (NULL);	}    return (moduleId->flags);    }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品免费看片| 免费观看成人av| 国产精品第13页| 国产精品五月天| 中文字幕精品在线不卡| 国产清纯美女被跳蛋高潮一区二区久久w | 天堂在线一区二区| 亚洲va天堂va国产va久| 亚洲一区二区欧美激情| 丝瓜av网站精品一区二区| 日韩国产欧美在线播放| 麻豆久久一区二区| 国内欧美视频一区二区| 国产福利视频一区二区三区| 不卡影院免费观看| 在线观看www91| 91麻豆精品国产91久久久使用方法| 91精品国产色综合久久不卡电影| 日韩欧美中文字幕制服| 久久丝袜美腿综合| 国产精品嫩草99a| 自拍av一区二区三区| 亚洲v精品v日韩v欧美v专区| 九九**精品视频免费播放| 国产精品一区二区你懂的| 成人av电影观看| 欧美午夜一区二区三区免费大片| 欧美一级艳片视频免费观看| 久久综合五月天婷婷伊人| 中文字幕亚洲在| 亚洲成a人片综合在线| 蓝色福利精品导航| 成人av资源在线观看| 欧美在线视频全部完| 日韩欧美一二三四区| 国产精品对白交换视频| 日韩二区三区在线观看| 国产福利精品一区| 欧美日韩日日骚| 国产欧美一区二区精品性色| 亚洲一区二区在线视频| 九一久久久久久| 91麻豆自制传媒国产之光| 6080亚洲精品一区二区| 欧美国产日韩a欧美在线观看| 亚洲一二三四久久| 国产一区91精品张津瑜| 欧美午夜一区二区三区 | 美日韩一区二区| www.色综合.com| 欧美一区日韩一区| 国产精品成人免费精品自在线观看| 香蕉成人啪国产精品视频综合网 | 91高清视频免费看| 久久亚洲综合av| 亚洲自拍偷拍九九九| 国产成人自拍网| 欧美一区二视频| 综合分类小说区另类春色亚洲小说欧美| 日本特黄久久久高潮 | 亚洲男女一区二区三区| 麻豆国产精品一区二区三区| 在线观看网站黄不卡| 久久老女人爱爱| 日韩中文字幕麻豆| 色哟哟一区二区在线观看| 26uuu亚洲| 日韩精品亚洲一区| 日本道精品一区二区三区| 中文在线免费一区三区高中清不卡| 日韩一区精品字幕| 色综合色狠狠综合色| 国产欧美一区在线| 黄色小说综合网站| 91精品综合久久久久久| 亚洲卡通动漫在线| 成人国产一区二区三区精品| 日韩美一区二区三区| 日韩高清欧美激情| 欧美日韩国产免费| 一区二区三区四区不卡在线 | 不卡的av在线播放| 久久久午夜精品| 精品亚洲porn| 欧美一级生活片| 亚洲一区二区三区在线播放| 一本大道久久a久久综合| 成人免费在线观看入口| 高清在线成人网| 中文字幕第一页久久| 国产精品99久久久久| 久久综合网色—综合色88| 另类小说视频一区二区| 日韩免费观看2025年上映的电影| 午夜a成v人精品| 制服丝袜成人动漫| 亚洲成av人片在线| 欧美日本在线播放| 婷婷久久综合九色国产成人 | 国产精品成人一区二区艾草| 成人动漫一区二区| 中文字幕一区二区三区蜜月| 大美女一区二区三区| 国产精品国产三级国产aⅴ中文| 丁香一区二区三区| 国产精品网站在线观看| 成人午夜短视频| 国产精品久线观看视频| 91视频xxxx| 亚洲午夜影视影院在线观看| 欧美亚一区二区| 日韩和欧美一区二区| 日韩一级成人av| 激情小说欧美图片| 国产婷婷色一区二区三区在线| 福利视频网站一区二区三区| 国产精品久久久久久久久免费桃花 | 久久色在线视频| 成人短视频下载| 一区二区三区四区av| 欧美人体做爰大胆视频| 蜜桃一区二区三区在线| 久久久九九九九| 色综合久久六月婷婷中文字幕| 洋洋av久久久久久久一区| 欧美精品久久久久久久久老牛影院 | 国产高清在线观看免费不卡| 综合久久久久综合| 欧美日韩国产精品成人| 久久成人综合网| 国产女主播视频一区二区| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲成人自拍一区| 久久美女艺术照精彩视频福利播放| 成人午夜精品一区二区三区| 亚洲成人免费观看| 久久久久国产精品厨房| 在线一区二区三区做爰视频网站| 婷婷激情综合网| 久久精品夜色噜噜亚洲a∨| 91美女蜜桃在线| 久久精品国产99久久6| 国产精品高清亚洲| 欧美一级淫片007| 99视频精品免费视频| 免费成人av在线| 成人欧美一区二区三区白人| 日韩三级电影网址| 色先锋资源久久综合| 久久99精品国产.久久久久久| 国产精品你懂的在线欣赏| 精品视频在线看| 国产九九视频一区二区三区| 亚洲影院在线观看| 国产三级欧美三级日产三级99| 欧美三级资源在线| 懂色av一区二区三区免费看| 天天免费综合色| 中文字幕在线一区| 日韩免费在线观看| 欧美中文字幕一二三区视频| 国产**成人网毛片九色 | 成人一区二区三区中文字幕| 三级不卡在线观看| 亚洲天堂av老司机| 国产亚洲欧美激情| 91精品国产综合久久久久久漫画| 成人动漫av在线| 国产美女主播视频一区| 日韩二区在线观看| 亚洲国产欧美在线| 国产精品久久久久天堂| 久久亚区不卡日本| 777xxx欧美| 91福利视频在线| 99久久精品免费看国产| 国产美女av一区二区三区| 肉色丝袜一区二区| 亚洲图片一区二区| 亚洲欧美日韩成人高清在线一区| 久久久另类综合| 日韩精品一区二| 欧美一区日韩一区| 欧美乱妇一区二区三区不卡视频| 91麻豆.com| 成a人片亚洲日本久久| 国产精品一品二品| 久久99精品国产.久久久久| 日韩精品成人一区二区三区| 亚洲与欧洲av电影| 亚洲欧美视频一区| 亚洲欧洲www| 国产精品久久久久久久久果冻传媒| 欧美精品一区二区三区一线天视频 | 久久久www成人免费毛片麻豆| 欧美mv日韩mv亚洲| 日韩欧美第一区| 日韩精品影音先锋| 日韩精品在线一区二区| 欧美mv日韩mv|