/* xdr_ptrace.c - xdr routines for remote ptrace calls */ /* Copyright 1984, 1985, 1986, 1987, 1988, 1989, 1991, 1992, 1993, 1998 Free Software Foundation, Inc. This code was donated by Wind River Systems, Inc. */ /* modification history -------------------- 01b,25may91,maf now uses counted bytes struct to transfer registers. removed xdr_regs_ptr (), xdr_fp_status_ptr (), and xdr_fpa_regs_ptr (). 01a,05jun90,llk extracted from xdr_ptrace.h, version 01c. */ #include "defs.h" #include "vxWorks.h" #include #include "xdr_ptrace.h" #define MAX_LEN 32000 /******************************************************************** * * xdr_c_bytes - * * xdr routine for counted bytes * */ bool_t xdr_c_bytes(xdrs,objp) XDR *xdrs; C_bytes *objp; { return(xdr_bytes(xdrs, &objp->bytes, (u_int *) &objp->len, MAX_LEN)); } /* xdr_c_bytes */ /******************************************************************** * * xdr_c_bytes_ptr - * * xdr routine for counted bytes branch of ptrace_info * */ LOCAL bool_t xdr_c_bytes_ptr(xdrs,objp) XDR *xdrs; C_bytes **objp; { return(xdr_pointer(xdrs, (char **) objp, sizeof(C_bytes), xdr_c_bytes)); } /* xdr_c_bytes_ptr */ /******************************************************************** * * xdr_ptrace_info - * * xdr routine for discriminated union ptrace_info * */ bool_t xdr_ptrace_info(xdrs,objp) XDR *xdrs; Ptrace_info *objp; { static struct xdr_discrim choices[] = { { (int) DATA, xdr_c_bytes_ptr }, { __dontcare__, NULL } }; return(xdr_union(xdrs, (enum_t *) &objp->ttype, (char *) &objp->more_data, choices, xdr_void)); } /* xdr_ptrace_info */ /******************************************************************** * * xdr_rptrace - * * xdr routine for remote ptrace data into server * */ bool_t xdr_rptrace(xdrs,objp) XDR *xdrs; Rptrace *objp; { if (! xdr_int(xdrs, &objp->pid)) return(FALSE); if (! xdr_int(xdrs, &objp->data)) return(FALSE); if (! xdr_int(xdrs, &objp->addr)) return(FALSE); if (! xdr_ptrace_info(xdrs, &objp->info)) return(FALSE); return(TRUE); } /* xdr_rptrace */ /******************************************************************** * * xdr_ptrace_return - * * xdr routine for remote ptrace data returned by server * */ bool_t xdr_ptrace_return(xdrs, objp) XDR *xdrs; Ptrace_return *objp; { if (! xdr_int(xdrs, &objp->status)) return(FALSE); if (! xdr_int(xdrs, &objp->errno_num)) return(FALSE); if (! xdr_ptrace_info(xdrs, &objp->info)) return(FALSE); return(TRUE); } /* xdr_ptrace_return */