]> granicus.if.org Git - strace/blob - memfd_create.c
Fix preprocessor indentation
[strace] / memfd_create.c
1 /*
2  * Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
3  * Copyright (c) 2015-2018 The strace developers.
4  * All rights reserved.
5  *
6  * SPDX-License-Identifier: LGPL-2.1-or-later
7  */
8
9 #include "defs.h"
10
11 #ifdef HAVE_LINUX_MEMFD_H
12 # include <linux/memfd.h>
13 #endif
14
15 #include "xlat/memfd_create_flags.h"
16
17 #ifndef MFD_HUGE_SHIFT
18 # define MFD_HUGE_SHIFT 26
19 #endif
20
21 #ifndef MFD_HUGE_MASK
22 # define MFD_HUGE_MASK 0x3f
23 #endif
24
25 SYS_FUNC(memfd_create)
26 {
27         printpathn(tcp, tcp->u_arg[0], 255 - (sizeof("memfd:") - 1));
28         tprints(", ");
29
30         unsigned int flags = tcp->u_arg[1];
31
32         if (!flags || xlat_verbose(xlat_verbosity) != XLAT_STYLE_ABBREV)
33                 tprintf("%#x", flags);
34
35         if (!flags || xlat_verbose(xlat_verbosity) == XLAT_STYLE_RAW)
36                 return RVAL_DECODED | RVAL_FD;
37
38         if (xlat_verbose(xlat_verbosity) == XLAT_STYLE_VERBOSE)
39                 tprints(" /* ");
40
41         const unsigned int mask = MFD_HUGE_MASK << MFD_HUGE_SHIFT;
42         const unsigned int hugetlb_value = flags & mask;
43         flags &= ~mask;
44
45         if (flags || !hugetlb_value)
46                 printflags_ex(flags, "MFD_???", XLAT_STYLE_ABBREV,
47                               memfd_create_flags, NULL);
48
49         if (hugetlb_value)
50                 tprintf("%s%u<<MFD_HUGE_SHIFT",
51                         flags ? "|" : "",
52                         hugetlb_value >> MFD_HUGE_SHIFT);
53
54         if (xlat_verbose(xlat_verbosity) == XLAT_STYLE_VERBOSE)
55                 tprints(" */");
56
57         return RVAL_DECODED | RVAL_FD;
58 }