Commit | Line | Data |
---|---|---|
277cf08f | 1 | #include <uapi/linux/mman.h> |
256763b0 | 2 | |
df4cb167 ACM |
3 | static size_t syscall_arg__scnprintf_mmap_prot(char *bf, size_t size, |
4 | struct syscall_arg *arg) | |
5 | { | |
6 | int printed = 0, prot = arg->val; | |
7 | ||
8 | if (prot == PROT_NONE) | |
9 | return scnprintf(bf, size, "NONE"); | |
10 | #define P_MMAP_PROT(n) \ | |
11 | if (prot & PROT_##n) { \ | |
12 | printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", #n); \ | |
13 | prot &= ~PROT_##n; \ | |
14 | } | |
15 | ||
16 | P_MMAP_PROT(EXEC); | |
17 | P_MMAP_PROT(READ); | |
18 | P_MMAP_PROT(WRITE); | |
df4cb167 | 19 | P_MMAP_PROT(SEM); |
df4cb167 ACM |
20 | P_MMAP_PROT(GROWSDOWN); |
21 | P_MMAP_PROT(GROWSUP); | |
22 | #undef P_MMAP_PROT | |
23 | ||
24 | if (prot) | |
25 | printed += scnprintf(bf + printed, size - printed, "%s%#x", printed ? "|" : "", prot); | |
26 | ||
27 | return printed; | |
28 | } | |
29 | ||
30 | #define SCA_MMAP_PROT syscall_arg__scnprintf_mmap_prot | |
31 | ||
df4cb167 ACM |
32 | static size_t syscall_arg__scnprintf_mmap_flags(char *bf, size_t size, |
33 | struct syscall_arg *arg) | |
34 | { | |
35 | int printed = 0, flags = arg->val; | |
36 | ||
37 | #define P_MMAP_FLAG(n) \ | |
38 | if (flags & MAP_##n) { \ | |
39 | printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", #n); \ | |
40 | flags &= ~MAP_##n; \ | |
41 | } | |
42 | ||
43 | P_MMAP_FLAG(SHARED); | |
44 | P_MMAP_FLAG(PRIVATE); | |
df4cb167 | 45 | P_MMAP_FLAG(32BIT); |
df4cb167 ACM |
46 | P_MMAP_FLAG(ANONYMOUS); |
47 | P_MMAP_FLAG(DENYWRITE); | |
48 | P_MMAP_FLAG(EXECUTABLE); | |
49 | P_MMAP_FLAG(FILE); | |
50 | P_MMAP_FLAG(FIXED); | |
51 | P_MMAP_FLAG(GROWSDOWN); | |
df4cb167 | 52 | P_MMAP_FLAG(HUGETLB); |
df4cb167 ACM |
53 | P_MMAP_FLAG(LOCKED); |
54 | P_MMAP_FLAG(NONBLOCK); | |
55 | P_MMAP_FLAG(NORESERVE); | |
56 | P_MMAP_FLAG(POPULATE); | |
57 | P_MMAP_FLAG(STACK); | |
df4cb167 | 58 | P_MMAP_FLAG(UNINITIALIZED); |
df4cb167 ACM |
59 | #undef P_MMAP_FLAG |
60 | ||
61 | if (flags) | |
62 | printed += scnprintf(bf + printed, size - printed, "%s%#x", printed ? "|" : "", flags); | |
63 | ||
64 | return printed; | |
65 | } | |
66 | ||
67 | #define SCA_MMAP_FLAGS syscall_arg__scnprintf_mmap_flags | |
68 | ||
69 | static size_t syscall_arg__scnprintf_mremap_flags(char *bf, size_t size, | |
70 | struct syscall_arg *arg) | |
71 | { | |
72 | int printed = 0, flags = arg->val; | |
73 | ||
74 | #define P_MREMAP_FLAG(n) \ | |
75 | if (flags & MREMAP_##n) { \ | |
76 | printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", #n); \ | |
77 | flags &= ~MREMAP_##n; \ | |
78 | } | |
79 | ||
80 | P_MREMAP_FLAG(MAYMOVE); | |
df4cb167 | 81 | P_MREMAP_FLAG(FIXED); |
df4cb167 ACM |
82 | #undef P_MREMAP_FLAG |
83 | ||
84 | if (flags) | |
85 | printed += scnprintf(bf + printed, size - printed, "%s%#x", printed ? "|" : "", flags); | |
86 | ||
87 | return printed; | |
88 | } | |
89 | ||
90 | #define SCA_MREMAP_FLAGS syscall_arg__scnprintf_mremap_flags | |
91 | ||
df4cb167 ACM |
92 | static size_t syscall_arg__scnprintf_madvise_behavior(char *bf, size_t size, |
93 | struct syscall_arg *arg) | |
94 | { | |
95 | int behavior = arg->val; | |
96 | ||
97 | switch (behavior) { | |
98 | #define P_MADV_BHV(n) case MADV_##n: return scnprintf(bf, size, #n) | |
99 | P_MADV_BHV(NORMAL); | |
100 | P_MADV_BHV(RANDOM); | |
101 | P_MADV_BHV(SEQUENTIAL); | |
102 | P_MADV_BHV(WILLNEED); | |
103 | P_MADV_BHV(DONTNEED); | |
f752e90e | 104 | P_MADV_BHV(FREE); |
df4cb167 ACM |
105 | P_MADV_BHV(REMOVE); |
106 | P_MADV_BHV(DONTFORK); | |
107 | P_MADV_BHV(DOFORK); | |
108 | P_MADV_BHV(HWPOISON); | |
df4cb167 | 109 | P_MADV_BHV(SOFT_OFFLINE); |
df4cb167 ACM |
110 | P_MADV_BHV(MERGEABLE); |
111 | P_MADV_BHV(UNMERGEABLE); | |
df4cb167 | 112 | P_MADV_BHV(HUGEPAGE); |
df4cb167 | 113 | P_MADV_BHV(NOHUGEPAGE); |
df4cb167 | 114 | P_MADV_BHV(DONTDUMP); |
df4cb167 | 115 | P_MADV_BHV(DODUMP); |
256763b0 | 116 | #undef P_MADV_BHV |
df4cb167 ACM |
117 | default: break; |
118 | } | |
119 | ||
120 | return scnprintf(bf, size, "%#x", behavior); | |
121 | } | |
122 | ||
123 | #define SCA_MADV_BHV syscall_arg__scnprintf_madvise_behavior |