1e93f7393Sniklas /* xdr_rdb.c - xdr routines for Remote Debug interface to VxWorks */
2e93f7393Sniklas
3*b725ae77Skettenis /* Copyright 1992, 1993 Free Software Foundation, Inc.
4e93f7393Sniklas
5e93f7393Sniklas This code was donated by Wind River Systems, Inc. */
6e93f7393Sniklas
7e93f7393Sniklas /*
8e93f7393Sniklas modification history
9e93f7393Sniklas --------------------
10e93f7393Sniklas 01a,21mar90,llk created using modification 01d of xdr_dbx.c.
11e93f7393Sniklas */
12e93f7393Sniklas
13e93f7393Sniklas /*
14e93f7393Sniklas DESCRIPTION
15e93f7393Sniklas This module contains the eXternal Data Representation (XDR) routines
16e93f7393Sniklas for the RDB interface for VxWorks.
17e93f7393Sniklas */
18e93f7393Sniklas
19e93f7393Sniklas #include "defs.h"
20e93f7393Sniklas #include "vxWorks.h"
21e93f7393Sniklas #include <rpc/rpc.h>
22e93f7393Sniklas #include "xdr_rdb.h"
23e93f7393Sniklas
24e93f7393Sniklas /* forward declarations */
25e93f7393Sniklas
26e93f7393Sniklas bool_t
xdr_arg_type(xdrs,objp)27e93f7393Sniklas xdr_arg_type(xdrs, objp)
28e93f7393Sniklas XDR *xdrs;
29e93f7393Sniklas arg_type *objp;
30e93f7393Sniklas {
31e93f7393Sniklas if (!xdr_enum(xdrs, (enum_t *)objp)) {
32e93f7393Sniklas return (FALSE);
33e93f7393Sniklas }
34e93f7393Sniklas return (TRUE);
35e93f7393Sniklas }
36e93f7393Sniklas
37e93f7393Sniklas bool_t
xdr_arg_value(xdrs,objp)38e93f7393Sniklas xdr_arg_value(xdrs, objp)
39e93f7393Sniklas XDR *xdrs;
40e93f7393Sniklas arg_value *objp;
41e93f7393Sniklas {
42e93f7393Sniklas if (!xdr_arg_type(xdrs, &objp->type)) {
43e93f7393Sniklas return (FALSE);
44e93f7393Sniklas }
45e93f7393Sniklas switch (objp->type) {
46e93f7393Sniklas case T_BYTE:
47e93f7393Sniklas if (!xdr_char(xdrs, &objp->arg_value_u.v_byte)) {
48e93f7393Sniklas return (FALSE);
49e93f7393Sniklas }
50e93f7393Sniklas break;
51e93f7393Sniklas case T_WORD:
52e93f7393Sniklas if (!xdr_short(xdrs, &objp->arg_value_u.v_word)) {
53e93f7393Sniklas return (FALSE);
54e93f7393Sniklas }
55e93f7393Sniklas break;
56e93f7393Sniklas case T_INT:
57e93f7393Sniklas if (!xdr_int(xdrs, &objp->arg_value_u.v_int)) {
58e93f7393Sniklas return (FALSE);
59e93f7393Sniklas }
60e93f7393Sniklas break;
61e93f7393Sniklas case T_FLOAT:
62e93f7393Sniklas if (!xdr_float(xdrs, &objp->arg_value_u.v_fp)) {
63e93f7393Sniklas return (FALSE);
64e93f7393Sniklas }
65e93f7393Sniklas break;
66e93f7393Sniklas case T_DOUBLE:
67e93f7393Sniklas if (!xdr_double(xdrs, &objp->arg_value_u.v_dp)) {
68e93f7393Sniklas return (FALSE);
69e93f7393Sniklas }
70e93f7393Sniklas break;
71e93f7393Sniklas case T_UNKNOWN:
72e93f7393Sniklas break;
73e93f7393Sniklas }
74e93f7393Sniklas return (TRUE);
75e93f7393Sniklas }
76e93f7393Sniklas
77e93f7393Sniklas bool_t
xdr_func_call(xdrs,objp)78e93f7393Sniklas xdr_func_call(xdrs, objp)
79e93f7393Sniklas XDR *xdrs;
80e93f7393Sniklas func_call *objp;
81e93f7393Sniklas {
82e93f7393Sniklas if (!xdr_int(xdrs, &objp->func_addr)) {
83e93f7393Sniklas return (FALSE);
84e93f7393Sniklas }
85e93f7393Sniklas if (!xdr_array(xdrs, (char **)&objp->args.args_val, (u_int *)&objp->args.args_len, MAX_FUNC_ARGS, sizeof(arg_value), xdr_arg_value)) {
86e93f7393Sniklas return (FALSE);
87e93f7393Sniklas }
88e93f7393Sniklas return (TRUE);
89e93f7393Sniklas }
90e93f7393Sniklas
91e93f7393Sniklas bool_t
xdr_arg_one(xdrs,objp)92e93f7393Sniklas xdr_arg_one(xdrs, objp)
93e93f7393Sniklas XDR *xdrs;
94e93f7393Sniklas arg_one *objp;
95e93f7393Sniklas {
96e93f7393Sniklas if (!xdr_string(xdrs, objp, MAX_ARG_LEN)) {
97e93f7393Sniklas return (FALSE);
98e93f7393Sniklas }
99e93f7393Sniklas return (TRUE);
100e93f7393Sniklas }
101e93f7393Sniklas
102e93f7393Sniklas
103e93f7393Sniklas
104e93f7393Sniklas
105e93f7393Sniklas bool_t
xdr_arg_array(xdrs,objp)106e93f7393Sniklas xdr_arg_array(xdrs, objp)
107e93f7393Sniklas XDR *xdrs;
108e93f7393Sniklas arg_array *objp;
109e93f7393Sniklas {
110e93f7393Sniklas if (!xdr_array(xdrs, (char **)&objp->arg_array_val, (u_int *)&objp->arg_array_len, MAX_ARG_CNT, sizeof(arg_one), xdr_arg_one)) {
111e93f7393Sniklas return (FALSE);
112e93f7393Sniklas }
113e93f7393Sniklas return (TRUE);
114e93f7393Sniklas }
115e93f7393Sniklas
116e93f7393Sniklas /*********************************************************************
117e93f7393Sniklas *
118e93f7393Sniklas * xdr_EVENT_TYPE -
119e93f7393Sniklas *
120e93f7393Sniklas */
121e93f7393Sniklas
xdr_EVENT_TYPE(xdrs,objp)122e93f7393Sniklas bool_t xdr_EVENT_TYPE(xdrs, objp)
123e93f7393Sniklas XDR *xdrs;
124e93f7393Sniklas EVENT_TYPE *objp;
125e93f7393Sniklas
126e93f7393Sniklas {
127e93f7393Sniklas if (!xdr_enum (xdrs, (enum_t *) objp))
128e93f7393Sniklas return (FALSE);
129e93f7393Sniklas return (TRUE);
130e93f7393Sniklas }
131e93f7393Sniklas
132e93f7393Sniklas /*********************************************************************
133e93f7393Sniklas *
134e93f7393Sniklas * xdr_RDB_EVENT -
135e93f7393Sniklas *
136e93f7393Sniklas */
137e93f7393Sniklas
xdr_RDB_EVENT(xdrs,objp)138e93f7393Sniklas bool_t xdr_RDB_EVENT (xdrs, objp)
139e93f7393Sniklas XDR *xdrs;
140e93f7393Sniklas RDB_EVENT *objp;
141e93f7393Sniklas
142e93f7393Sniklas {
143e93f7393Sniklas if (!xdr_int (xdrs, &objp->status))
144e93f7393Sniklas return (FALSE);
145e93f7393Sniklas if (!xdr_int (xdrs, &objp->taskId))
146e93f7393Sniklas return (FALSE);
147e93f7393Sniklas if (!xdr_EVENT_TYPE (xdrs, &objp->eventType))
148e93f7393Sniklas return (FALSE);
149e93f7393Sniklas if (!xdr_int (xdrs, &objp->sigType))
150e93f7393Sniklas return (FALSE);
151e93f7393Sniklas return (TRUE);
152e93f7393Sniklas }
153e93f7393Sniklas
154e93f7393Sniklas /*********************************************************************
155e93f7393Sniklas *
156e93f7393Sniklas * xdr_TASK_START -
157e93f7393Sniklas *
158e93f7393Sniklas */
159e93f7393Sniklas
160e93f7393Sniklas bool_t
xdr_TASK_START(xdrs,objp)161e93f7393Sniklas xdr_TASK_START (xdrs, objp)
162e93f7393Sniklas XDR *xdrs;
163e93f7393Sniklas TASK_START *objp;
164e93f7393Sniklas
165e93f7393Sniklas {
166e93f7393Sniklas if (!xdr_int (xdrs, &objp->status))
167e93f7393Sniklas return (FALSE);
168e93f7393Sniklas if (!xdr_int (xdrs, &objp->pid))
169e93f7393Sniklas return (FALSE);
170e93f7393Sniklas return (TRUE);
171e93f7393Sniklas }
172e93f7393Sniklas
173e93f7393Sniklas
174e93f7393Sniklas /*********************************************************************
175e93f7393Sniklas *
176e93f7393Sniklas * xdr_SYMBOL_ADDR -
177e93f7393Sniklas *
178e93f7393Sniklas */
179e93f7393Sniklas
180e93f7393Sniklas bool_t
xdr_SYMBOL_ADDR(xdrs,objp)181e93f7393Sniklas xdr_SYMBOL_ADDR (xdrs, objp)
182e93f7393Sniklas XDR *xdrs;
183e93f7393Sniklas SYMBOL_ADDR *objp;
184e93f7393Sniklas
185e93f7393Sniklas {
186e93f7393Sniklas if (!xdr_int (xdrs, &objp->status))
187e93f7393Sniklas return (FALSE);
188e93f7393Sniklas if (!xdr_u_int (xdrs, &objp->addr))
189e93f7393Sniklas return (FALSE);
190e93f7393Sniklas return (TRUE);
191e93f7393Sniklas }
192e93f7393Sniklas
193e93f7393Sniklas /*********************************************************************
194e93f7393Sniklas *
195e93f7393Sniklas * xdr_SOURCE_STEP -
196e93f7393Sniklas *
197e93f7393Sniklas */
198e93f7393Sniklas
199e93f7393Sniklas bool_t
xdr_SOURCE_STEP(xdrs,objp)200e93f7393Sniklas xdr_SOURCE_STEP (xdrs, objp)
201e93f7393Sniklas XDR *xdrs;
202e93f7393Sniklas SOURCE_STEP *objp;
203e93f7393Sniklas
204e93f7393Sniklas {
205e93f7393Sniklas if (!xdr_int (xdrs, &objp->taskId))
206e93f7393Sniklas return (FALSE);
207e93f7393Sniklas if (!xdr_u_int (xdrs, &objp->startAddr))
208e93f7393Sniklas return (FALSE);
209e93f7393Sniklas if (!xdr_u_int (xdrs, &objp->endAddr))
210e93f7393Sniklas return (FALSE);
211e93f7393Sniklas return (TRUE);
212e93f7393Sniklas }
213