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