perf trace beauty open_flags: Add missing headers
[deliverable/linux.git] / tools / perf / trace / beauty / open_flags.c
CommitLineData
9d4a94ca
ACM
1#include <sys/types.h>
2#include <sys/stat.h>
3#include <fcntl.h>
8f48df69
ACM
4
5static size_t syscall_arg__scnprintf_open_flags(char *bf, size_t size,
6 struct syscall_arg *arg)
7{
8 int printed = 0, flags = arg->val;
9
10 if (!(flags & O_CREAT))
11 arg->mask |= 1 << (arg->idx + 1); /* Mask the mode parm */
12
13 if (flags == 0)
14 return scnprintf(bf, size, "RDONLY");
15#define P_FLAG(n) \
16 if (flags & O_##n) { \
17 printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", #n); \
18 flags &= ~O_##n; \
19 }
20
21 P_FLAG(APPEND);
22 P_FLAG(ASYNC);
23 P_FLAG(CLOEXEC);
24 P_FLAG(CREAT);
25 P_FLAG(DIRECT);
26 P_FLAG(DIRECTORY);
27 P_FLAG(EXCL);
28 P_FLAG(LARGEFILE);
29 P_FLAG(NOATIME);
30 P_FLAG(NOCTTY);
31#ifdef O_NONBLOCK
32 P_FLAG(NONBLOCK);
33#elif O_NDELAY
34 P_FLAG(NDELAY);
35#endif
36#ifdef O_PATH
37 P_FLAG(PATH);
38#endif
39 P_FLAG(RDWR);
40#ifdef O_DSYNC
41 if ((flags & O_SYNC) == O_SYNC)
42 printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", "SYNC");
43 else {
44 P_FLAG(DSYNC);
45 }
46#else
47 P_FLAG(SYNC);
48#endif
49 P_FLAG(TRUNC);
50 P_FLAG(WRONLY);
51#undef P_FLAG
52
53 if (flags)
54 printed += scnprintf(bf + printed, size - printed, "%s%#x", printed ? "|" : "", flags);
55
56 return printed;
57}
58
59#define SCA_OPEN_FLAGS syscall_arg__scnprintf_open_flags
This page took 0.033244 seconds and 5 git commands to generate.