1 /* Generated by ./maint/gen/generate.sh from ./maint/gen/defs/hdio.def; do not edit. */
2
3 #include <stddef.h>
4 #include "generated.h"
5
6 typedef kernel_ulong_t kernel_size_t;
7
8 #include <linux/hdreg.h>
9 #include "xlat/hdio_ide_nice.h"
10 #include "xlat/hdio_busstates.h"
11 static int
12 var_leaf_ioctl_HDIO_DRIVE_RESET(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
13 {
14 tprint_arg_next();
15 /* arg: arg (array *) */
16 /* using decoder from defs/common.def:44:1 */
17
18 {
19 uint32_t int_buffer;
20 print_array(tcp, (arg), (3), &int_buffer, sizeof(int_buffer),
21 tfetch_mem, print_xint_array_member, 0);
22 }
23
24 return RVAL_IOCTL_DECODED;
25 }
26 static int
27 var_leaf_ioctl_HDIO_GET_32BIT(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
28 {
29 if (entering(tcp)) {
30 tprint_arg_next();
31 return 0;
32 }
33 /* arg: arg (kernel_ulong_t *) */
34 kernel_ulong_t tmpvar_arg;
35 if (!umove_or_printaddr(tcp, arg, &tmpvar_arg)) {
36 tprint_indirect_begin();
37 PRINT_VAL_U((kernel_ulong_t) tmpvar_arg);
38 tprint_indirect_end();
39 }
40
41 return RVAL_IOCTL_DECODED;
42 }
43 static int
44 var_leaf_ioctl_HDIO_GET_ACOUSTIC(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
45 {
46 if (entering(tcp)) {
47 tprint_arg_next();
48 return 0;
49 }
50 /* arg: arg (kernel_ulong_t *) */
51 kernel_ulong_t tmpvar_arg;
52 if (!umove_or_printaddr(tcp, arg, &tmpvar_arg)) {
53 tprint_indirect_begin();
54 PRINT_VAL_U((kernel_ulong_t) tmpvar_arg);
55 tprint_indirect_end();
56 }
57
58 return RVAL_IOCTL_DECODED;
59 }
60 static int
61 var_leaf_ioctl_HDIO_GET_ADDRESS(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
62 {
63 if (entering(tcp)) {
64 tprint_arg_next();
65 return 0;
66 }
67 /* arg: arg (kernel_ulong_t *) */
68 kernel_ulong_t tmpvar_arg;
69 if (!umove_or_printaddr(tcp, arg, &tmpvar_arg)) {
70 tprint_indirect_begin();
71 PRINT_VAL_U((kernel_ulong_t) tmpvar_arg);
72 tprint_indirect_end();
73 }
74
75 return RVAL_IOCTL_DECODED;
76 }
77 static int
78 var_leaf_ioctl_HDIO_GET_BUSSTATE(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
79 {
80 if (entering(tcp)) {
81 tprint_arg_next();
82 return 0;
83 }
84 /* arg: arg (kernel_ulong_t *) */
85 kernel_ulong_t tmpvar_arg;
86 if (!umove_or_printaddr(tcp, arg, &tmpvar_arg)) {
87 tprint_indirect_begin();
88 printxval64(hdio_busstates, zero_extend_signed_to_ull(tmpvar_arg), "BUSSTATE_???");
89 tprint_indirect_end();
90 }
91
92 return RVAL_IOCTL_DECODED;
93 }
94 static int
95 var_leaf_ioctl_HDIO_GET_DMA(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
96 {
97 if (entering(tcp)) {
98 tprint_arg_next();
99 return 0;
100 }
101 /* arg: arg (kernel_ulong_t *) */
102 kernel_ulong_t tmpvar_arg;
103 if (!umove_or_printaddr(tcp, arg, &tmpvar_arg)) {
104 tprint_indirect_begin();
105 PRINT_VAL_U((kernel_ulong_t) tmpvar_arg);
106 tprint_indirect_end();
107 }
108
109 return RVAL_IOCTL_DECODED;
110 }
111 static int
112 var_leaf_ioctl_HDIO_GET_IDENTITY(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
113 {
114 if (entering(tcp)) {
115 tprint_arg_next();
116 return 0;
117 }
118 /* arg: identity (stringnoz *) */
119 /* using decoder from defs/common.def:13:1 */
120
121 if (entering(tcp)) {
122 printstrn(tcp, (arg), (512));
123 } else if (syserror(tcp)) {
124 printaddr((arg));
125 } else {
126 printstrn(tcp, (arg), (512));
127 }
128
129 return RVAL_IOCTL_DECODED;
130 }
131 static int
132 var_leaf_ioctl_HDIO_GET_KEEPSETTINGS(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
133 {
134 if (entering(tcp)) {
135 tprint_arg_next();
136 return 0;
137 }
138 /* arg: keep_settings (kernel_ulong_t *) */
139 kernel_ulong_t tmpvar_keep_settings;
140 if (!umove_or_printaddr(tcp, arg, &tmpvar_keep_settings)) {
141 tprint_indirect_begin();
142 PRINT_VAL_U((kernel_ulong_t) tmpvar_keep_settings);
143 tprint_indirect_end();
144 }
145
146 return RVAL_IOCTL_DECODED;
147 }
148 static int
149 var_leaf_ioctl_HDIO_GET_MULTCOUNT(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
150 {
151 if (entering(tcp)) {
152 tprint_arg_next();
153 return 0;
154 }
155 /* arg: multcount (kernel_ulong_t *) */
156 kernel_ulong_t tmpvar_multcount;
157 if (!umove_or_printaddr(tcp, arg, &tmpvar_multcount)) {
158 tprint_indirect_begin();
159 PRINT_VAL_U((kernel_ulong_t) tmpvar_multcount);
160 tprint_indirect_end();
161 }
162
163 return RVAL_IOCTL_DECODED;
164 }
165 static int
166 var_leaf_ioctl_HDIO_GET_NICE(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
167 {
168 if (entering(tcp)) {
169 tprint_arg_next();
170 return 0;
171 }
172 /* arg: arg (kernel_ulong_t *) */
173 kernel_ulong_t tmpvar_arg;
174 if (!umove_or_printaddr(tcp, arg, &tmpvar_arg)) {
175 tprint_indirect_begin();
176 printflags64(hdio_ide_nice, zero_extend_signed_to_ull(tmpvar_arg), "IDE_NICE_???");
177 tprint_indirect_end();
178 }
179
180 return RVAL_IOCTL_DECODED;
181 }
182 static int
183 var_leaf_ioctl_HDIO_GET_NOWERR(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
184 {
185 if (entering(tcp)) {
186 tprint_arg_next();
187 return 0;
188 }
189 /* arg: arg (kernel_ulong_t *) */
190 kernel_ulong_t tmpvar_arg;
191 if (!umove_or_printaddr(tcp, arg, &tmpvar_arg)) {
192 tprint_indirect_begin();
193 PRINT_VAL_U((kernel_ulong_t) tmpvar_arg);
194 tprint_indirect_end();
195 }
196
197 return RVAL_IOCTL_DECODED;
198 }
199 static int
200 var_leaf_ioctl_HDIO_GET_UNMASKINTR(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
201 {
202 if (entering(tcp)) {
203 tprint_arg_next();
204 return 0;
205 }
206 /* arg: unmaskintr (kernel_ulong_t *) */
207 kernel_ulong_t tmpvar_unmaskintr;
208 if (!umove_or_printaddr(tcp, arg, &tmpvar_unmaskintr)) {
209 tprint_indirect_begin();
210 PRINT_VAL_U((kernel_ulong_t) tmpvar_unmaskintr);
211 tprint_indirect_end();
212 }
213
214 return RVAL_IOCTL_DECODED;
215 }
216 static int
217 var_leaf_ioctl_HDIO_GET_WCACHE(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
218 {
219 if (entering(tcp)) {
220 tprint_arg_next();
221 return 0;
222 }
223 /* arg: arg (kernel_ulong_t *) */
224 kernel_ulong_t tmpvar_arg;
225 if (!umove_or_printaddr(tcp, arg, &tmpvar_arg)) {
226 tprint_indirect_begin();
227 PRINT_VAL_U((kernel_ulong_t) tmpvar_arg);
228 tprint_indirect_end();
229 }
230
231 return RVAL_IOCTL_DECODED;
232 }
233 static int
234 var_leaf_ioctl_HDIO_OBSOLETE_IDENTITY(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
235 {
236 if (entering(tcp)) {
237 tprint_arg_next();
238 return 0;
239 }
240 /* arg: identity (stringnoz *) */
241 /* using decoder from defs/common.def:13:1 */
242
243 if (entering(tcp)) {
244 printstrn(tcp, (arg), (142));
245 } else if (syserror(tcp)) {
246 printaddr((arg));
247 } else {
248 printstrn(tcp, (arg), (142));
249 }
250
251 return RVAL_IOCTL_DECODED;
252 }
253 static int
254 var_leaf_ioctl_HDIO_SCAN_HWIF(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
255 {
256 tprint_arg_next();
257 /* arg: arg (array *) */
258 /* using decoder from defs/common.def:44:1 */
259
260 {
261 uint32_t int_buffer;
262 print_array(tcp, (arg), (3), &int_buffer, sizeof(int_buffer),
263 tfetch_mem, print_xint_array_member, 0);
264 }
265
266 return RVAL_IOCTL_DECODED;
267 }
268 static int
269 var_leaf_ioctl_HDIO_SET_32BIT(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
270 {
271 tprint_arg_next();
272 /* arg: arg (kernel_ulong_t) */
273 PRINT_VAL_U((kernel_ulong_t) arg);
274
275 return RVAL_IOCTL_DECODED;
276 }
277 static int
278 var_leaf_ioctl_HDIO_SET_ACOUSTIC(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
279 {
280 tprint_arg_next();
281 /* arg: arg (kernel_ulong_t) */
282 PRINT_VAL_U((kernel_ulong_t) arg);
283
284 return RVAL_IOCTL_DECODED;
285 }
286 static int
287 var_leaf_ioctl_HDIO_SET_ADDRESS(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
288 {
289 tprint_arg_next();
290 /* arg: arg (kernel_ulong_t) */
291 PRINT_VAL_U((kernel_ulong_t) arg);
292
293 return RVAL_IOCTL_DECODED;
294 }
295 static int
296 var_leaf_ioctl_HDIO_SET_BUSSTATE(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
297 {
298 tprint_arg_next();
299 /* arg: arg (kernel_ulong_t) */
300 printxval64(hdio_busstates, zero_extend_signed_to_ull(arg), "BUSSTATE_???");
301
302 return RVAL_IOCTL_DECODED;
303 }
304 static int
305 var_leaf_ioctl_HDIO_SET_DMA(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
306 {
307 tprint_arg_next();
308 /* arg: arg (kernel_ulong_t) */
309 PRINT_VAL_U((kernel_ulong_t) arg);
310
311 return RVAL_IOCTL_DECODED;
312 }
313 static int
314 var_leaf_ioctl_HDIO_SET_KEEPSETTINGS(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
315 {
316 tprint_arg_next();
317 /* arg: keep_settings (kernel_ulong_t) */
318 PRINT_VAL_U((kernel_ulong_t) arg);
319
320 return RVAL_IOCTL_DECODED;
321 }
322 static int
323 var_leaf_ioctl_HDIO_SET_MULTCOUNT(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
324 {
325 tprint_arg_next();
326 /* arg: multcount (kernel_ulong_t) */
327 PRINT_VAL_U((kernel_ulong_t) arg);
328
329 return RVAL_IOCTL_DECODED;
330 }
331 static int
332 var_leaf_ioctl_HDIO_SET_NICE(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
333 {
334 tprint_arg_next();
335 /* arg: arg (kernel_ulong_t) */
336 printflags64(hdio_ide_nice, zero_extend_signed_to_ull(arg), "IDE_NICE_???");
337
338 return RVAL_IOCTL_DECODED;
339 }
340 static int
341 var_leaf_ioctl_HDIO_SET_NOWERR(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
342 {
343 tprint_arg_next();
344 /* arg: arg (kernel_ulong_t) */
345 PRINT_VAL_U((kernel_ulong_t) arg);
346
347 return RVAL_IOCTL_DECODED;
348 }
349 static int
350 var_leaf_ioctl_HDIO_SET_PIO_MODE(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
351 {
352 tprint_arg_next();
353 /* arg: arg (kernel_ulong_t) */
354 PRINT_VAL_U((kernel_ulong_t) arg);
355
356 return RVAL_IOCTL_DECODED;
357 }
358 static int
359 var_leaf_ioctl_HDIO_SET_UNMASKINTR(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
360 {
361 tprint_arg_next();
362 /* arg: unmaskintr (kernel_ulong_t) */
363 PRINT_VAL_U((kernel_ulong_t) arg);
364
365 return RVAL_IOCTL_DECODED;
366 }
367 static int
368 var_leaf_ioctl_HDIO_SET_WCACHE(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
369 {
370 tprint_arg_next();
371 /* arg: arg (kernel_ulong_t) */
372 PRINT_VAL_U((kernel_ulong_t) arg);
373
374 return RVAL_IOCTL_DECODED;
375 }
376 static int
377 var_leaf_ioctl_HDIO_UNREGISTER_HWIF(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
378 {
379 tprint_arg_next();
380 /* arg: arg (kernel_ulong_t) */
381 PRINT_VAL_U((kernel_ulong_t) arg);
382
383 return RVAL_IOCTL_DECODED;
384 }
385 static int
386 var_leaf_ioctl_HDIO(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
387 {
388 return RVAL_DECODED;
389 }
390 int
391 var_ioctl_HDIO(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
392 {
393 if ((code) == (HDIO_DRIVE_RESET)) {
394 return var_leaf_ioctl_HDIO_DRIVE_RESET(tcp, code, arg);
395 } else if ((code) == (HDIO_GET_32BIT)) {
396 return var_leaf_ioctl_HDIO_GET_32BIT(tcp, code, arg);
397 } else if ((code) == (HDIO_GET_ACOUSTIC)) {
398 return var_leaf_ioctl_HDIO_GET_ACOUSTIC(tcp, code, arg);
399 } else if ((code) == (HDIO_GET_ADDRESS)) {
400 return var_leaf_ioctl_HDIO_GET_ADDRESS(tcp, code, arg);
401 } else if ((code) == (HDIO_GET_BUSSTATE)) {
402 return var_leaf_ioctl_HDIO_GET_BUSSTATE(tcp, code, arg);
403 } else if ((code) == (HDIO_GET_DMA)) {
404 return var_leaf_ioctl_HDIO_GET_DMA(tcp, code, arg);
405 } else if ((code) == (HDIO_GET_IDENTITY)) {
406 return var_leaf_ioctl_HDIO_GET_IDENTITY(tcp, code, arg);
407 } else if ((code) == (HDIO_GET_KEEPSETTINGS)) {
408 return var_leaf_ioctl_HDIO_GET_KEEPSETTINGS(tcp, code, arg);
409 } else if ((code) == (HDIO_GET_MULTCOUNT)) {
410 return var_leaf_ioctl_HDIO_GET_MULTCOUNT(tcp, code, arg);
411 } else if ((code) == (HDIO_GET_NICE)) {
412 return var_leaf_ioctl_HDIO_GET_NICE(tcp, code, arg);
413 } else if ((code) == (HDIO_GET_NOWERR)) {
414 return var_leaf_ioctl_HDIO_GET_NOWERR(tcp, code, arg);
415 } else if ((code) == (HDIO_GET_UNMASKINTR)) {
416 return var_leaf_ioctl_HDIO_GET_UNMASKINTR(tcp, code, arg);
417 } else if ((code) == (HDIO_GET_WCACHE)) {
418 return var_leaf_ioctl_HDIO_GET_WCACHE(tcp, code, arg);
419 } else if ((code) == (HDIO_OBSOLETE_IDENTITY)) {
420 return var_leaf_ioctl_HDIO_OBSOLETE_IDENTITY(tcp, code, arg);
421 } else if ((code) == (HDIO_SCAN_HWIF)) {
422 return var_leaf_ioctl_HDIO_SCAN_HWIF(tcp, code, arg);
423 } else if ((code) == (HDIO_SET_32BIT)) {
424 return var_leaf_ioctl_HDIO_SET_32BIT(tcp, code, arg);
425 } else if ((code) == (HDIO_SET_ACOUSTIC)) {
426 return var_leaf_ioctl_HDIO_SET_ACOUSTIC(tcp, code, arg);
427 } else if ((code) == (HDIO_SET_ADDRESS)) {
428 return var_leaf_ioctl_HDIO_SET_ADDRESS(tcp, code, arg);
429 } else if ((code) == (HDIO_SET_BUSSTATE)) {
430 return var_leaf_ioctl_HDIO_SET_BUSSTATE(tcp, code, arg);
431 } else if ((code) == (HDIO_SET_DMA)) {
432 return var_leaf_ioctl_HDIO_SET_DMA(tcp, code, arg);
433 } else if ((code) == (HDIO_SET_KEEPSETTINGS)) {
434 return var_leaf_ioctl_HDIO_SET_KEEPSETTINGS(tcp, code, arg);
435 } else if ((code) == (HDIO_SET_MULTCOUNT)) {
436 return var_leaf_ioctl_HDIO_SET_MULTCOUNT(tcp, code, arg);
437 } else if ((code) == (HDIO_SET_NICE)) {
438 return var_leaf_ioctl_HDIO_SET_NICE(tcp, code, arg);
439 } else if ((code) == (HDIO_SET_NOWERR)) {
440 return var_leaf_ioctl_HDIO_SET_NOWERR(tcp, code, arg);
441 } else if ((code) == (HDIO_SET_PIO_MODE)) {
442 return var_leaf_ioctl_HDIO_SET_PIO_MODE(tcp, code, arg);
443 } else if ((code) == (HDIO_SET_UNMASKINTR)) {
444 return var_leaf_ioctl_HDIO_SET_UNMASKINTR(tcp, code, arg);
445 } else if ((code) == (HDIO_SET_WCACHE)) {
446 return var_leaf_ioctl_HDIO_SET_WCACHE(tcp, code, arg);
447 } else if ((code) == (HDIO_UNREGISTER_HWIF)) {
448 return var_leaf_ioctl_HDIO_UNREGISTER_HWIF(tcp, code, arg);
449 } else {
450 return var_leaf_ioctl_HDIO(tcp, code, arg);
451 }
452 }