ASoC: pcm512x: Scrub my work address from the driver
[sfrench/cifs-2.6.git] / tools / perf / trace / beauty / open_flags.c
1 #include <sys/types.h>
2 #include <sys/stat.h>
3 #include <fcntl.h>
4
5 #ifndef O_DIRECT
6 #define O_DIRECT        00040000
7 #endif
8
9 #ifndef O_DIRECTORY
10 #define O_DIRECTORY     00200000
11 #endif
12
13 #ifndef O_NOATIME
14 #define O_NOATIME       01000000
15 #endif
16
17 #ifndef O_TMPFILE
18 #define O_TMPFILE       020000000
19 #endif
20
21 #undef O_LARGEFILE
22 #define O_LARGEFILE     00100000
23
24 size_t open__scnprintf_flags(unsigned long flags, char *bf, size_t size)
25 {
26         int printed = 0;
27
28         if (flags == 0)
29                 return scnprintf(bf, size, "RDONLY");
30 #define P_FLAG(n) \
31         if (flags & O_##n) { \
32                 printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", #n); \
33                 flags &= ~O_##n; \
34         }
35
36         P_FLAG(RDWR);
37         P_FLAG(APPEND);
38         P_FLAG(ASYNC);
39         P_FLAG(CLOEXEC);
40         P_FLAG(CREAT);
41         P_FLAG(DIRECT);
42         P_FLAG(DIRECTORY);
43         P_FLAG(EXCL);
44         P_FLAG(LARGEFILE);
45         P_FLAG(NOFOLLOW);
46         P_FLAG(TMPFILE);
47         P_FLAG(NOATIME);
48         P_FLAG(NOCTTY);
49 #ifdef O_NONBLOCK
50         P_FLAG(NONBLOCK);
51 #elif O_NDELAY
52         P_FLAG(NDELAY);
53 #endif
54 #ifdef O_PATH
55         P_FLAG(PATH);
56 #endif
57 #ifdef O_DSYNC
58         if ((flags & O_SYNC) == O_SYNC)
59                 printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", "SYNC");
60         else {
61                 P_FLAG(DSYNC);
62         }
63 #else
64         P_FLAG(SYNC);
65 #endif
66         P_FLAG(TRUNC);
67         P_FLAG(WRONLY);
68 #undef P_FLAG
69
70         if (flags)
71                 printed += scnprintf(bf + printed, size - printed, "%s%#x", printed ? "|" : "", flags);
72
73         return printed;
74 }
75
76 size_t syscall_arg__scnprintf_open_flags(char *bf, size_t size, struct syscall_arg *arg)
77 {
78         int flags = arg->val;
79
80         if (!(flags & O_CREAT))
81                 arg->mask |= 1 << (arg->idx + 1); /* Mask the mode parm */
82
83         return open__scnprintf_flags(flags, bf, size);
84 }