Merge branch 'drm-tda998x-mali' into drm-tda998x-devel
[linux-2.6-block.git] / tools / perf / trace / beauty / mmap.c
1 #include <sys/mman.h>
2
3 #ifndef PROT_SEM
4 #define PROT_SEM 0x8
5 #endif
6
7 static size_t syscall_arg__scnprintf_mmap_prot(char *bf, size_t size,
8                                                struct syscall_arg *arg)
9 {
10         int printed = 0, prot = arg->val;
11
12         if (prot == PROT_NONE)
13                 return scnprintf(bf, size, "NONE");
14 #define P_MMAP_PROT(n) \
15         if (prot & PROT_##n) { \
16                 printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", #n); \
17                 prot &= ~PROT_##n; \
18         }
19
20         P_MMAP_PROT(EXEC);
21         P_MMAP_PROT(READ);
22         P_MMAP_PROT(WRITE);
23         P_MMAP_PROT(SEM);
24         P_MMAP_PROT(GROWSDOWN);
25         P_MMAP_PROT(GROWSUP);
26 #undef P_MMAP_PROT
27
28         if (prot)
29                 printed += scnprintf(bf + printed, size - printed, "%s%#x", printed ? "|" : "", prot);
30
31         return printed;
32 }
33
34 #define SCA_MMAP_PROT syscall_arg__scnprintf_mmap_prot
35
36 #ifndef MAP_FIXED
37 #define MAP_FIXED                    0x10
38 #endif
39
40 #ifndef MAP_ANONYMOUS
41 #define MAP_ANONYMOUS                0x20
42 #endif
43
44 #ifndef MAP_32BIT
45 #define MAP_32BIT                    0x40
46 #endif
47
48 #ifndef MAP_STACK
49 #define MAP_STACK                 0x20000
50 #endif
51
52 #ifndef MAP_HUGETLB
53 #define MAP_HUGETLB               0x40000
54 #endif
55
56 #ifndef MAP_UNINITIALIZED
57 #define MAP_UNINITIALIZED       0x4000000
58 #endif
59
60
61 static size_t syscall_arg__scnprintf_mmap_flags(char *bf, size_t size,
62                                                 struct syscall_arg *arg)
63 {
64         int printed = 0, flags = arg->val;
65
66 #define P_MMAP_FLAG(n) \
67         if (flags & MAP_##n) { \
68                 printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", #n); \
69                 flags &= ~MAP_##n; \
70         }
71
72         P_MMAP_FLAG(SHARED);
73         P_MMAP_FLAG(PRIVATE);
74         P_MMAP_FLAG(32BIT);
75         P_MMAP_FLAG(ANONYMOUS);
76         P_MMAP_FLAG(DENYWRITE);
77         P_MMAP_FLAG(EXECUTABLE);
78         P_MMAP_FLAG(FILE);
79         P_MMAP_FLAG(FIXED);
80         P_MMAP_FLAG(GROWSDOWN);
81         P_MMAP_FLAG(HUGETLB);
82         P_MMAP_FLAG(LOCKED);
83         P_MMAP_FLAG(NONBLOCK);
84         P_MMAP_FLAG(NORESERVE);
85         P_MMAP_FLAG(POPULATE);
86         P_MMAP_FLAG(STACK);
87         P_MMAP_FLAG(UNINITIALIZED);
88 #undef P_MMAP_FLAG
89
90         if (flags)
91                 printed += scnprintf(bf + printed, size - printed, "%s%#x", printed ? "|" : "", flags);
92
93         return printed;
94 }
95
96 #define SCA_MMAP_FLAGS syscall_arg__scnprintf_mmap_flags
97
98 #ifndef MREMAP_MAYMOVE
99 #define MREMAP_MAYMOVE 1
100 #endif
101 #ifndef MREMAP_FIXED
102 #define MREMAP_FIXED 2
103 #endif
104
105 static size_t syscall_arg__scnprintf_mremap_flags(char *bf, size_t size,
106                                                   struct syscall_arg *arg)
107 {
108         int printed = 0, flags = arg->val;
109
110 #define P_MREMAP_FLAG(n) \
111         if (flags & MREMAP_##n) { \
112                 printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", #n); \
113                 flags &= ~MREMAP_##n; \
114         }
115
116         P_MREMAP_FLAG(MAYMOVE);
117         P_MREMAP_FLAG(FIXED);
118 #undef P_MREMAP_FLAG
119
120         if (flags)
121                 printed += scnprintf(bf + printed, size - printed, "%s%#x", printed ? "|" : "", flags);
122
123         return printed;
124 }
125
126 #define SCA_MREMAP_FLAGS syscall_arg__scnprintf_mremap_flags
127
128 #ifndef MADV_HWPOISON
129 #define MADV_HWPOISON           100
130 #endif
131
132 #ifndef MADV_SOFT_OFFLINE
133 #define MADV_SOFT_OFFLINE       101
134 #endif
135
136 #ifndef MADV_MERGEABLE
137 #define MADV_MERGEABLE           12
138 #endif
139
140 #ifndef MADV_UNMERGEABLE
141 #define MADV_UNMERGEABLE         13
142 #endif
143
144 #ifndef MADV_HUGEPAGE
145 #define MADV_HUGEPAGE            14
146 #endif
147
148 #ifndef MADV_NOHUGEPAGE
149 #define MADV_NOHUGEPAGE          15
150 #endif
151
152 #ifndef MADV_DONTDUMP
153 #define MADV_DONTDUMP            16
154 #endif
155
156 #ifndef MADV_DODUMP
157 #define MADV_DODUMP              17
158 #endif
159
160
161 static size_t syscall_arg__scnprintf_madvise_behavior(char *bf, size_t size,
162                                                       struct syscall_arg *arg)
163 {
164         int behavior = arg->val;
165
166         switch (behavior) {
167 #define P_MADV_BHV(n) case MADV_##n: return scnprintf(bf, size, #n)
168         P_MADV_BHV(NORMAL);
169         P_MADV_BHV(RANDOM);
170         P_MADV_BHV(SEQUENTIAL);
171         P_MADV_BHV(WILLNEED);
172         P_MADV_BHV(DONTNEED);
173         P_MADV_BHV(REMOVE);
174         P_MADV_BHV(DONTFORK);
175         P_MADV_BHV(DOFORK);
176         P_MADV_BHV(HWPOISON);
177         P_MADV_BHV(SOFT_OFFLINE);
178         P_MADV_BHV(MERGEABLE);
179         P_MADV_BHV(UNMERGEABLE);
180         P_MADV_BHV(HUGEPAGE);
181         P_MADV_BHV(NOHUGEPAGE);
182         P_MADV_BHV(DONTDUMP);
183         P_MADV_BHV(DODUMP);
184 #undef P_MADV_BHV
185         default: break;
186         }
187
188         return scnprintf(bf, size, "%#x", behavior);
189 }
190
191 #define SCA_MADV_BHV syscall_arg__scnprintf_madvise_behavior