| /* xdr_rdb.c - xdr routines for Remote Debug interface to VxWorks */ |
| |
| /* Copyright 1992, 1993 Free Software Foundation, Inc. |
| |
| This code was donated by Wind River Systems, Inc. */ |
| |
| /* |
| modification history |
| -------------------- |
| 01a,21mar90,llk created using modification 01d of xdr_dbx.c. |
| */ |
| |
| /* |
| DESCRIPTION |
| This module contains the eXternal Data Representation (XDR) routines |
| for the RDB interface for VxWorks. |
| */ |
| |
| #include "defs.h" |
| #include "vxWorks.h" |
| #include <rpc/rpc.h> |
| #include "xdr_rdb.h" |
| |
| /* forward declarations */ |
| |
| bool_t |
| xdr_arg_type(xdrs, objp) |
| XDR *xdrs; |
| arg_type *objp; |
| { |
| if (!xdr_enum(xdrs, (enum_t *)objp)) { |
| return (FALSE); |
| } |
| return (TRUE); |
| } |
| |
| bool_t |
| xdr_arg_value(xdrs, objp) |
| XDR *xdrs; |
| arg_value *objp; |
| { |
| if (!xdr_arg_type(xdrs, &objp->type)) { |
| return (FALSE); |
| } |
| switch (objp->type) { |
| case T_BYTE: |
| if (!xdr_char(xdrs, &objp->arg_value_u.v_byte)) { |
| return (FALSE); |
| } |
| break; |
| case T_WORD: |
| if (!xdr_short(xdrs, &objp->arg_value_u.v_word)) { |
| return (FALSE); |
| } |
| break; |
| case T_INT: |
| if (!xdr_int(xdrs, &objp->arg_value_u.v_int)) { |
| return (FALSE); |
| } |
| break; |
| case T_FLOAT: |
| if (!xdr_float(xdrs, &objp->arg_value_u.v_fp)) { |
| return (FALSE); |
| } |
| break; |
| case T_DOUBLE: |
| if (!xdr_double(xdrs, &objp->arg_value_u.v_dp)) { |
| return (FALSE); |
| } |
| break; |
| case T_UNKNOWN: |
| break; |
| } |
| return (TRUE); |
| } |
| |
| bool_t |
| xdr_func_call(xdrs, objp) |
| XDR *xdrs; |
| func_call *objp; |
| { |
| if (!xdr_int(xdrs, &objp->func_addr)) { |
| return (FALSE); |
| } |
| if (!xdr_array(xdrs, (char **)&objp->args.args_val, (u_int *)&objp->args.args_len, MAX_FUNC_ARGS, sizeof(arg_value), xdr_arg_value)) { |
| return (FALSE); |
| } |
| return (TRUE); |
| } |
| |
| bool_t |
| xdr_arg_one(xdrs, objp) |
| XDR *xdrs; |
| arg_one *objp; |
| { |
| if (!xdr_string(xdrs, objp, MAX_ARG_LEN)) { |
| return (FALSE); |
| } |
| return (TRUE); |
| } |
| |
| |
| |
| |
| bool_t |
| xdr_arg_array(xdrs, objp) |
| XDR *xdrs; |
| arg_array *objp; |
| { |
| if (!xdr_array(xdrs, (char **)&objp->arg_array_val, (u_int *)&objp->arg_array_len, MAX_ARG_CNT, sizeof(arg_one), xdr_arg_one)) { |
| return (FALSE); |
| } |
| return (TRUE); |
| } |
| |
| /********************************************************************* |
| * |
| * xdr_EVENT_TYPE - |
| * |
| */ |
| |
| bool_t xdr_EVENT_TYPE(xdrs, objp) |
| XDR *xdrs; |
| EVENT_TYPE *objp; |
| |
| { |
| if (!xdr_enum (xdrs, (enum_t *) objp)) |
| return (FALSE); |
| return (TRUE); |
| } |
| |
| /********************************************************************* |
| * |
| * xdr_RDB_EVENT - |
| * |
| */ |
| |
| bool_t xdr_RDB_EVENT (xdrs, objp) |
| XDR *xdrs; |
| RDB_EVENT *objp; |
| |
| { |
| if (!xdr_int (xdrs, &objp->status)) |
| return (FALSE); |
| if (!xdr_int (xdrs, &objp->taskId)) |
| return (FALSE); |
| if (!xdr_EVENT_TYPE (xdrs, &objp->eventType)) |
| return (FALSE); |
| if (!xdr_int (xdrs, &objp->sigType)) |
| return (FALSE); |
| return (TRUE); |
| } |
| |
| /********************************************************************* |
| * |
| * xdr_TASK_START - |
| * |
| */ |
| |
| bool_t |
| xdr_TASK_START (xdrs, objp) |
| XDR *xdrs; |
| TASK_START *objp; |
| |
| { |
| if (!xdr_int (xdrs, &objp->status)) |
| return (FALSE); |
| if (!xdr_int (xdrs, &objp->pid)) |
| return (FALSE); |
| return (TRUE); |
| } |
| |
| |
| /********************************************************************* |
| * |
| * xdr_SYMBOL_ADDR - |
| * |
| */ |
| |
| bool_t |
| xdr_SYMBOL_ADDR (xdrs, objp) |
| XDR *xdrs; |
| SYMBOL_ADDR *objp; |
| |
| { |
| if (!xdr_int (xdrs, &objp->status)) |
| return (FALSE); |
| if (!xdr_u_int (xdrs, &objp->addr)) |
| return (FALSE); |
| return (TRUE); |
| } |
| |
| /********************************************************************* |
| * |
| * xdr_SOURCE_STEP - |
| * |
| */ |
| |
| bool_t |
| xdr_SOURCE_STEP (xdrs, objp) |
| XDR *xdrs; |
| SOURCE_STEP *objp; |
| |
| { |
| if (!xdr_int (xdrs, &objp->taskId)) |
| return (FALSE); |
| if (!xdr_u_int (xdrs, &objp->startAddr)) |
| return (FALSE); |
| if (!xdr_u_int (xdrs, &objp->endAddr)) |
| return (FALSE); |
| return (TRUE); |
| } |