1 | // SPDX-License-Identifier: LGPL-2.1 |
2 | #ifndef EFD_SEMAPHORE |
3 | #define EFD_SEMAPHORE 1 |
4 | #endif |
5 | |
6 | #ifndef EFD_NONBLOCK |
7 | #define EFD_NONBLOCK 00004000 |
8 | #endif |
9 | |
10 | #ifndef EFD_CLOEXEC |
11 | #define EFD_CLOEXEC 02000000 |
12 | #endif |
13 | |
14 | static size_t syscall_arg__scnprintf_eventfd_flags(char *bf, size_t size, struct syscall_arg *arg) |
15 | { |
16 | bool show_prefix = arg->show_string_prefix; |
17 | const char *prefix = "EFD_" ; |
18 | int printed = 0, flags = arg->val; |
19 | |
20 | if (flags == 0) |
21 | return scnprintf(buf: bf, size, fmt: "NONE" ); |
22 | #define P_FLAG(n) \ |
23 | if (flags & EFD_##n) { \ |
24 | printed += scnprintf(bf + printed, size - printed, "%s%s%s", printed ? "|" : "", show_prefix ? prefix : "", #n); \ |
25 | flags &= ~EFD_##n; \ |
26 | } |
27 | |
28 | P_FLAG(SEMAPHORE); |
29 | P_FLAG(CLOEXEC); |
30 | P_FLAG(NONBLOCK); |
31 | #undef P_FLAG |
32 | |
33 | if (flags) |
34 | printed += scnprintf(buf: bf + printed, size: size - printed, fmt: "%s%#x" , printed ? "|" : "" , flags); |
35 | |
36 | return printed; |
37 | } |
38 | |
39 | #define SCA_EFD_FLAGS syscall_arg__scnprintf_eventfd_flags |
40 | |