⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xdrwtx.c

📁 VXWORKS源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
/* xdrwtx.c  - xdr routines for Wind River Tool eXchange protocol *//* Copyright 1984-1997 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------03b,03apr02,c_c  Changed xdr_wrapstring to xdr_string to workaround a xdr                 limitation on the target (SPR #74773).03a,15jun01,pch  Add new WTX_TS_INFO_GET_V2 service to handle WTX_RT_INFO                 change (from BOOL32 hasFpp to UINT32 hasCoprocessor) without                 breaking existing clients.02z,10may01,dtr  Changing coprocessor flags into one word.02y,06feb01,dtr  Adding probe for Altivec registers.02x,18aug98,pcn  Re-use WTX_MSG_EVTPT_LIST_2.02w,20jul98,pcn  Added evtptNum and toolId in the wtxEventpointListGet return                 list.02v,19jun98,pcn  Changed xdr_WTX_MSG_FILE_LOAD_DESC to accept new fields.02u,26may98,pcn  Changed WTX_MSG_EVTPT_LIST_2 in WTX_MSG_EVTPT_LIST_GET.02t,26mar98,pcn  Updated history.02s,23mar98,pcn  WTX 2: added test in xdr_WTX_MSG_FILE_LOAD_DESC to take care 		 of different behaviors of wtxObjModuleLoad_2.02r,02mar98,pcn  WTX 2: added xdr_MEM_WIDTH_COPY_ALLOC,                 xdr_WTX_MSG_MEM_WIDTH_READ_DESC,                 xdr_WTX_MSG_MEM_WIDTH_COPY_DESC, xdr_WTX_EVENT_NODE,                 xdr_MSG_EVENT_LIST, xdr_WTX_MSG_FILE_LOAD_DESC,                 xdr_WTX_LD_M_FILE_DESC, xdr_WTX_EVENT_2, xdr_WTX_EVTPT_2,                 xdr_WTX_MSG_EVTPT_DESC_2, xdr_WTX_MSG_EVTPT_LIST_2. Changed                 xdr_WTX_MSG_EVTPT_LIST, xdr_WTX_EVENT_DESC.02q,13feb98,c_c  Fixed a memory leak in xdr_WTX_MSG_CONTEXT_DESC02p,29aug97,fle  Adding the WTX_MEM_DISASSEMBLE service02o,30sep96,elp  put in share, adapted to be compiled on target side		 (SPR# 6775).02n,28jun96,c_s  subvert prototypes in AIX's <rpc/xdr.h> to temporarily                 work around problems with XDR arguments that change                 signedness.02m,17jun96,p_m	 changed flags type in xdr_WTX_MSG_OPEN_DESC() (SPR# 4941).02l,10jun96,elp	 re-installed 02j (fix SPR# 6502 without protocol change).02k,20may96,elp	 updated xdr_WTX_MSG_SYM_TBL_INFO to new WTX_MSG_SYM_TBL_INFO		 type (SPR# 6205).02j,31aug95,p_m  added free() in xdr_WTX_MSG_VIO_COPY_DESC() (SPR# 4804).02i,06jun95,p_m  took care of WTX_MSG_SYM_MATCH_DESC changes in		 xdr_WTX_MSG_SYM_MATCH_DESC().02h,01jun95,p_m  removed WTX_MSG_CALL_PARAM and modified WTX_MSG_CONTEXT_DESC.02g,30may95,p_m  completed WTX_MEM_SCAN and WTX_MEM_MOVE implementation.02f,26may95,p_m  added match field in WTX_MSG_MEM_SCAN_DESC.02e,23may95,p_m  made missing name changes.02d,22may95,jcf  name revision.02c,19may95,p_m  got rid of DETECTION related stuff.02b,16may95,p_m  added xdr_WTX_MSG_KILL_DESC.02a,14may95,c_s  fixed memory leak in xdr_WTX_MEM_XFER; fixed free-memory                    fault in xdr_WTX_SYM_LIST.01z,10may95,pad  modified xdr_WTX_MSG_SYM_LIST and xdr_WTX_MSG_SYM_MATCH_DESC.01y,09may95,p_m  re-implemented wtxregd related XDR procedures. Added Target 		 Server version in WTX_MSG_TS_INFO.01x,05may95,p_m  added protVersion in xdr_WTX_CORE.01w,02may95,pad  xdr_WTX_MSG_MODULE_INFO now handles format field as char *01v,30mar95,p_m  changed xdr_CONTEXT_ID_T() to xdr_WTX_CONTEXT_ID_T().01u,20mar95,c_s  updated GOPHER structure filters.01t,16mar95,p_m  added xdr_WTX_MSG_VIO_FILE_LIST().01s,10mar95,p_m  changed endian field to u_long.01r,03mar95,p_m  merged with wtxxdr.c.		 added gopher routines.01q,27feb95,p_m  cleanup up xdr_WTX_MSG_MEM_SCAN_DESC.		 added symTblId to xdr_WTX_MSG_SYM_TBL_INFO.		 simplified WTX_WDB_SERVICE_DESC.01p,25feb95,jcf  extended xdr_WTX_TS_INFO.01o,21feb95,pad  added xdr_WTX_WTX_SERVICE_DESC() and modified		 xdr_WTX_MSG_SERVICE_DESC().01n,08feb95,p_m  added loadFlag in WTX_MODULE_INFO.		 changed to xdr_WTX_MSG... for more coherency.		 added many filters now that WTX and WDB are separated.01m,30jan95,p_m  added additional routines objects and name to 		 xdr_SERVICE_DESC().		 added xdr_WTX_MEM_XFER(), xdr_WTX_REG_WRITE()		 and  xdr_WTX_MEM_SET_DESC().01l,23jan95,p_m  updated xdr_TOOL_DESC and xdr_WTX_TS_INFO.		 replaced #include "wdb/xdrwdb.h" with #include "xdrwdb.h".			 replace rtnName by initRtnName in xdr_SERVICE_DESC().01k,21jan95,jcf  updated include files.01j,13dec94,p_m  updated to use files generated from wtx.x.		 added xdr_WTX_MEM_INFO().		 added WTX_SYM_LIST to LD_M_FILE to return undefined symbols.		 changed xdr_WTX_WRAP_STRING() to xdr_WRAPSTRING().			 added addlDataLen and addData fields to WTX_EVENT.01i,17nov94,p_m  added symFlag to xdr_LD_M_FILE(). changed all routine 		 pointers to routine names in SERVICE_DESC.01h,14nov94,p_m  renamed VIO_OPEN_DESC to OPEN_DESC and added channel to 		 OPEN_DESC.01g,11nov94,p_m  removed xdr_WTX_GOPHER_TAPE.01f,28oct94,p_m  added returnType field in WTX_CALL_PARAMS.		 added pEvtpt field management in EVTPT_LIST.		 added xdr_SYM_TAB_INFO() and xdr_SYM_TAB_LIST().		 changed xdr_SYM_TAB_PARAM() to xdr_SYM_TBL_PARAM().		 added xdr object file names in xdr_SERVICE_DESC.		 added display in xdr_CONSOLE_DESC.01e,27oct94,p_m  added exactName field in WTX_SYMBOL.01d,24oct94,p_m  added xdr_WTX_WRAP_STRING() and xdr_SYM_MATCH_DESC. 	 	 changed xdr_WTX_CALL_PARAMS().		 added moduleId handling in xdr_LD_M_FILE().		 added xdr_WTX_SYM_LIST().01c,20oct94,p_m  added xdr_MEM_COPY_ALLOC() and xdr_WTX_SYMBOL(). Added 		 moduleId handling in xdr_WTX_MODULE_INFO. Added null		 pointer handling in xdr_MOD_NAME_OR_ID.01b,19oct94,p_m  added xdr_pointers in xdr_WTX_TS_INFO.01a,04oct94,p_m  written.*//*DESCRIPTIONThis module contains the eXternal Data Representation (XDR) routinesfor the WTX protocol.*/#if defined (RS6000_AIX4)/* AIX is extremely picky about the signedness of arguments passed to    stock xdr rouintes.  This hack ends that debate. */#define _NO_PROTO#endif /* !RS6000_AIX4 */#include <stdlib.h>#include "rpc/rpc.h"#include "wtx.h"#include "wtxmsg.h"#include "wtxxdr.h"#define LASTUNSIGNED      ((u_int) 0-1) /* taken from SUN xdr.c file *//********************************************************************************* xdr_WRAPSTRING - possibly NULL string pointer**/bool_t xdr_WRAPSTRING     (    XDR *	xdrs,    char **	string    )    {    BOOL	moreData;    moreData = (*string != NULL);		/* string is a NULL pointer ?*/    if (!xdr_bool(xdrs, &moreData))		/* code/decode test result */	return (FALSE);    if (!moreData)	*string = NULL;				/* YES: string is NULL */    else 					/* NO: code/decode the string */	{	if (xdrs->x_op == XDR_DECODE)	    *string = NULL;    	if (!xdr_string (xdrs, string, LASTUNSIGNED))	    return (FALSE);	}    return (TRUE);    }#ifdef HOST/********************************************************************************* xdr_TGT_ADDR_T - WTX**/bool_t xdr_TGT_ADDR_T     (    XDR *           xdrs,    TGT_ADDR_T * objp    )    {    if (!xdr_u_long (xdrs, objp))	return (FALSE);    return (TRUE);    }#endif/********************************************************************************* xdr_TGT_ARG_T - WTX**/bool_t xdr_TGT_ARG_T     (    XDR *       xdrs,    TGT_ARG_T * objp    )    {    if (!xdr_u_long (xdrs, objp))	return (FALSE);    return (TRUE);    }/********************************************************************************* xdr_WTX_CONTEXT_ID_T - WTX**/bool_t xdr_WTX_CONTEXT_ID_T     (    XDR * 	       xdrs,    WTX_CONTEXT_ID_T * objp    )    {    if (!xdr_u_long (xdrs, (u_long *)objp))	return (FALSE);    return (TRUE);    }/********************************************************************************* xdr_WTX_VALUE - WTX**/bool_t xdr_WTX_VALUE    (    XDR *xdrs,    WTX_VALUE *objp    )    {	if (!xdr_enum(xdrs, (enum_t *)&objp->valueType)) {		return (FALSE);	}	switch (objp->valueType) {	case 0:		if (!xdr_char(xdrs, &objp->value_u.v_int8)) {			return (FALSE);		}		break;	case 1:		if (!xdr_short(xdrs, &objp->value_u.v_int16)) {			return (FALSE);		}		break;	case 2:		if (!xdr_long(xdrs, (long *)&objp->value_u.v_int32)) {			return (FALSE);		}		break;	case 3:		if (!xdr_u_char(xdrs, &objp->value_u.v_uint8)) {			return (FALSE);		}		break;	case 4:		if (!xdr_u_short(xdrs, &objp->value_u.v_uint16)) {			return (FALSE);		}		break;	case 5:		if (!xdr_u_long(xdrs, (u_long *)&objp->value_u.v_uint32)) {			return (FALSE);		}		break;	case 6:		if (!xdr_double(xdrs, &objp->value_u.v_double)) {			return (FALSE);		}		break;	case 7:		if (!xdr_long(xdrs, (long *)&objp->value_u.v_bool32)) {			return (FALSE);		}		break;	case 8:		if (!xdr_WRAPSTRING(xdrs, &objp->value_u.v_pchar)) {			return (FALSE);		}		break;	/* XXX p_m treat void * as a long for now */	case 9:		if (!xdr_long(xdrs, (long *)&objp->value_u.v_pvoid)) {			return (FALSE);		}		break;	case 10:		if (!xdr_TGT_ADDR_T(xdrs, &objp->value_u.v_tgt_addr)) {			return (FALSE);		}		break;	case 11:		if (!xdr_TGT_ARG_T(xdrs, &objp->value_u.v_tgt_arg)) {			return (FALSE);		}		break;	}	return (TRUE);    }/********************************************************************************* xdr_WTX_MSG_RESULT - WTX**/bool_t xdr_WTX_MSG_RESULT     (    XDR *           xdrs,    WTX_MSG_RESULT * objp    )    {    if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))	return (FALSE);    if (!xdr_WTX_VALUE (xdrs, &objp->val))	return (FALSE);    return (TRUE);    }/********************************************************************************* xdr_WTX_MSG_PARAM - WTX**/bool_t xdr_WTX_MSG_PARAM     (    XDR *           xdrs,    WTX_MSG_PARAM * objp    )    {    if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))	return (FALSE);    if (!xdr_WTX_VALUE (xdrs, &objp->param))	return (FALSE);    return (TRUE);    }/********************************************************************************* xdr_WTX_MEM_REGION - WTX**/bool_t xdr_WTX_MEM_REGION     (    XDR *           xdrs,    WTX_MEM_REGION * objp    )    {    if (!xdr_TGT_ADDR_T (xdrs, &objp->baseAddr))	return (FALSE);    if (!xdr_u_long (xdrs, (u_long *)&objp->size))	return (FALSE);    if (!xdr_u_long (xdrs, (u_long *)&objp->attribute))	return (FALSE);    return (TRUE);    }/********************************************************************************* xdr_WTX_TGT_LINK_DESC - target link descriptor**/bool_t xdr_WTX_TGT_LINK_DESC     (    XDR *	    xdrs,    WTX_TGT_LINK_DESC * objp    )    {    if (!xdr_WRAPSTRING (xdrs, &objp->name))	return (FALSE);    if (!xdr_u_long (xdrs, (u_long *)&objp->type))	return (FALSE);    if (!xdr_u_long (xdrs, (u_long *)&objp->speed))	return (FALSE);    return (TRUE);    }/********************************************************************************* xdr_WTX_RT_INFO - **/LOCAL bool_t xdr_WTX_RT_INFO    (    XDR *		xdrs,    WTX_RT_INFO *	objp,    int			msgVersion    )    {	if (!xdr_u_long(xdrs, (u_long *)&objp->rtType)) {		return (FALSE);	}	if (!xdr_WRAPSTRING(xdrs, &objp->rtVersion)) {		return (FALSE);	}	if (!xdr_u_long(xdrs, (u_long *)&objp->cpuType)) {		return (FALSE);	}	if (msgVersion == 1) {	    /*	     * The BOOL32 field named hasFpp has been replaced by a	     * bit-significant UINT32 named hasCoprocessor.  For a	     * v1 inquiry, report only the FPP bit (as a BOOL32).	     */	    BOOL32 bTemp = objp->hasCoprocessor & WTX_FPP_MASK;	    if (!xdr_bool(xdrs, (bool_t *)&bTemp)) {		return (FALSE);	    }	}	else {	    if (!xdr_u_long(xdrs, (u_long *)&objp->hasCoprocessor)) {		return (FALSE);	    }	}	if (!xdr_bool(xdrs, (bool_t *)&objp->hasWriteProtect)) {		return (FALSE);	}	if (!xdr_u_long(xdrs, (u_long *)&objp->pageSize)) {		return (FALSE);	}	if (!xdr_u_long(xdrs, (u_long *)&objp->endian)) {		return (FALSE);	}	if (!xdr_WRAPSTRING(xdrs, &objp->bspName)) {		return (FALSE);	}	if (!xdr_WRAPSTRING(xdrs, &objp->bootline)) {		return (FALSE);	}	if (!xdr_TGT_ADDR_T(xdrs, &objp->memBase)) {		return (FALSE);	}	if (!xdr_u_long(xdrs, (u_long *)&objp->memSize)) {		return (FALSE);	}	if (!xdr_u_long(xdrs, (u_long *)&objp->numRegions)) {		return (FALSE);	}	if (!xdr_pointer(xdrs, (char **)&objp->memRegion, 	sizeof(WTX_MEM_REGION), xdr_WTX_MEM_REGION)) {		return (FALSE);	}	if (!xdr_TGT_ADDR_T(xdrs, &objp->hostPoolBase)) {		return (FALSE);	}	if (!xdr_u_long(xdrs, (u_long *)&objp->hostPoolSize)) {		return (FALSE);	}    return (TRUE);    }/********************************************************************************* xdr_WTX_AGENT_INFO - **/bool_t xdr_WTX_AGENT_INFO    (    XDR *	xdrs,    WTX_AGENT_INFO * objp    )    {	if (!xdr_WRAPSTRING(xdrs, &objp->agentVersion)) {		return (FALSE);	}	if (!xdr_u_long(xdrs, (u_long *)&objp->mtu)) {		return (FALSE);	}	if (!xdr_u_long(xdrs, (u_long *)&objp->mode)) {		return (FALSE);	}    return (TRUE);    }/********************************************************************************* xdr_WTX_TGT_INFO - WTX**/LOCAL bool_t xdr_WTX_TGT_INFO     (    XDR *		xdrs,    WTX_TGT_INFO *	objp,    int			msgVersion    )    {    if (!xdr_WTX_AGENT_INFO (xdrs, &objp->agentInfo))	return (FALSE);    if (!xdr_WTX_RT_INFO (xdrs, &objp->rtInfo, msgVersion))	return (FALSE);    return (TRUE);    }/********************************************************************************* xdr_WTX_TOOL_DESC - host tool descriptor**/bool_t xdr_WTX_TOOL_DESC     (    XDR *       xdrs,    WTX_TOOL_DESC * objp    )    {    if (!xdr_u_long (xdrs, (u_long *)&objp->id))	return (FALSE);    if (!xdr_WRAPSTRING (xdrs, &objp->toolName))	return (FALSE);    if (!xdr_WRAPSTRING (xdrs, &objp->toolArgv))	return (FALSE);    if (!xdr_WRAPSTRING (xdrs, &objp->toolArgv))	return (FALSE);    if (!xdr_WRAPSTRING (xdrs, &objp->userName))	return (FALSE);    if (!xdr_pointer (xdrs, (char **) &objp->next, 			sizeof(WTX_TOOL_DESC), xdr_WTX_TOOL_DESC))	return (FALSE);    return (TRUE);    }/********************************************************************************* xdr_WTX_MSG_TOOL_DESC - WTX host tool descriptor**/bool_t xdr_WTX_MSG_TOOL_DESC     (    XDR *           xdrs,    WTX_MSG_TOOL_DESC * objp    )    {    if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -