1 /*
2 * Decode struct sg_req_info.
3 *
4 * Copyright (c) 2017-2021 Dmitry V. Levin <ldv@strace.io>
5 * All rights reserved.
6 *
7 * SPDX-License-Identifier: LGPL-2.1-or-later
8 */
9
10 #include "defs.h"
11
12 #ifdef HAVE_SCSI_SG_H
13
14 # include DEF_MPERS_TYPE(struct_sg_req_info)
15
16 # include <scsi/sg.h>
17
18 typedef struct sg_req_info struct_sg_req_info;
19
20 #endif /* HAVE_SCSI_SG_H */
21
22 #include MPERS_DEFS
23
24 #ifdef HAVE_SCSI_SG_H
25
26 MPERS_PRINTER_DECL(int, decode_sg_req_info,
27 struct tcb *const tcp, const kernel_ulong_t arg)
28 {
29 struct_sg_req_info info;
30
31 if (entering(tcp))
32 return 0;
33
34 tprint_arg_next();
35 if (!umove_or_printaddr(tcp, arg, &info)) {
36 tprint_struct_begin();
37 PRINT_FIELD_D(info, req_state);
38 tprint_struct_next();
39 PRINT_FIELD_D(info, orphan);
40 tprint_struct_next();
41 PRINT_FIELD_D(info, sg_io_owned);
42 tprint_struct_next();
43 PRINT_FIELD_D(info, problem);
44 tprint_struct_next();
45 PRINT_FIELD_D(info, pack_id);
46 tprint_struct_next();
47 PRINT_FIELD_PTR(info, usr_ptr);
48 tprint_struct_next();
49 PRINT_FIELD_U(info, duration);
50 tprint_struct_end();
51 }
52
53 return RVAL_IOCTL_DECODED;
54 }
55
56 #endif /* HAVE_SCSI_SG_H */