]> granicus.if.org Git - strace/blob - nbd_ioctl.c
tests: add ioctl_evdev-success* test binaries to .gitignore
[strace] / nbd_ioctl.c
1 /*
2  * Copyright (c) 2018 The strace developers.
3  * All rights reserved.
4  *
5  * SPDX-License-Identifier: LGPL-2.1-or-later
6  */
7
8 #include "defs.h"
9 #include "print_fields.h"
10 #include <linux/ioctl.h>
11 #include <linux/types.h>
12 #include <linux/nbd.h>
13
14 #define XLAT_MACROS_ONLY
15 #include "xlat/nbd_ioctl_cmds.h"
16 #undef XLAT_MACROS_ONLY
17
18 #include "xlat/nbd_ioctl_flags.h"
19
20 int
21 nbd_ioctl(struct tcb *const tcp, const unsigned int code,
22           const kernel_ulong_t arg)
23 {
24         switch (code) {
25         case NBD_DISCONNECT:
26         case NBD_CLEAR_SOCK:
27         case NBD_DO_IT:
28         case NBD_CLEAR_QUE:
29         case NBD_PRINT_DEBUG:
30                 return RVAL_IOCTL_DECODED;
31
32         case NBD_SET_SOCK:
33                 tprints(", ");
34                 printfd(tcp, arg);
35                 return RVAL_IOCTL_DECODED;
36
37         case NBD_SET_BLKSIZE:
38         case NBD_SET_SIZE:
39         case NBD_SET_SIZE_BLOCKS:
40         case NBD_SET_TIMEOUT:
41                 tprints(", ");
42                 tprintf("%" PRI_klu, arg);
43                 return RVAL_IOCTL_DECODED;
44
45         case NBD_SET_FLAGS:
46                 tprints(", ");
47                 printflags(nbd_ioctl_flags, arg, "NBD_IOC_FLAG_???");
48                 return RVAL_IOCTL_DECODED;
49
50         default:
51                 return RVAL_DECODED;
52         }
53 }