1794f594eSArnaldo Carvalho de Melo // SPDX-License-Identifier: LGPL-2.1
2c19d0847SArnaldo Carvalho de Melo
3c19d0847SArnaldo Carvalho de Melo #include "trace/beauty/beauty.h"
4c19d0847SArnaldo Carvalho de Melo #include <linux/kernel.h>
5c19d0847SArnaldo Carvalho de Melo #include <uapi/linux/fcntl.h>
68bf382ceSArnaldo Carvalho de Melo
74c7c224aSArnaldo Carvalho de Melo #ifndef LOCK_MAND
84c7c224aSArnaldo Carvalho de Melo #define LOCK_MAND 32
94c7c224aSArnaldo Carvalho de Melo #endif
104c7c224aSArnaldo Carvalho de Melo
114c7c224aSArnaldo Carvalho de Melo #ifndef LOCK_READ
124c7c224aSArnaldo Carvalho de Melo #define LOCK_READ 64
134c7c224aSArnaldo Carvalho de Melo #endif
144c7c224aSArnaldo Carvalho de Melo
154c7c224aSArnaldo Carvalho de Melo #ifndef LOCK_WRITE
164c7c224aSArnaldo Carvalho de Melo #define LOCK_WRITE 128
174c7c224aSArnaldo Carvalho de Melo #endif
184c7c224aSArnaldo Carvalho de Melo
194c7c224aSArnaldo Carvalho de Melo #ifndef LOCK_RW
204c7c224aSArnaldo Carvalho de Melo #define LOCK_RW 192
214c7c224aSArnaldo Carvalho de Melo #endif
224c7c224aSArnaldo Carvalho de Melo
syscall_arg__scnprintf_flock(char * bf,size_t size,struct syscall_arg * arg)23c19d0847SArnaldo Carvalho de Melo size_t syscall_arg__scnprintf_flock(char *bf, size_t size, struct syscall_arg *arg)
248bf382ceSArnaldo Carvalho de Melo {
25*c65c83ffSArnaldo Carvalho de Melo bool show_prefix = arg->show_string_prefix;
26*c65c83ffSArnaldo Carvalho de Melo const char *prefix = "LOCK_";
278bf382ceSArnaldo Carvalho de Melo int printed = 0, op = arg->val;
288bf382ceSArnaldo Carvalho de Melo
298bf382ceSArnaldo Carvalho de Melo if (op == 0)
308bf382ceSArnaldo Carvalho de Melo return scnprintf(bf, size, "NONE");
318bf382ceSArnaldo Carvalho de Melo #define P_CMD(cmd) \
328bf382ceSArnaldo Carvalho de Melo if ((op & LOCK_##cmd) == LOCK_##cmd) { \
33*c65c83ffSArnaldo Carvalho de Melo printed += scnprintf(bf + printed, size - printed, "%s%s%s", printed ? "|" : "", show_prefix ? prefix : "", #cmd); \
348bf382ceSArnaldo Carvalho de Melo op &= ~LOCK_##cmd; \
358bf382ceSArnaldo Carvalho de Melo }
368bf382ceSArnaldo Carvalho de Melo
378bf382ceSArnaldo Carvalho de Melo P_CMD(SH);
388bf382ceSArnaldo Carvalho de Melo P_CMD(EX);
398bf382ceSArnaldo Carvalho de Melo P_CMD(NB);
408bf382ceSArnaldo Carvalho de Melo P_CMD(UN);
418bf382ceSArnaldo Carvalho de Melo P_CMD(MAND);
428bf382ceSArnaldo Carvalho de Melo P_CMD(RW);
438bf382ceSArnaldo Carvalho de Melo P_CMD(READ);
448bf382ceSArnaldo Carvalho de Melo P_CMD(WRITE);
458bf382ceSArnaldo Carvalho de Melo #undef P_OP
468bf382ceSArnaldo Carvalho de Melo
478bf382ceSArnaldo Carvalho de Melo if (op)
488bf382ceSArnaldo Carvalho de Melo printed += scnprintf(bf + printed, size - printed, "%s%#x", printed ? "|" : "", op);
498bf382ceSArnaldo Carvalho de Melo
508bf382ceSArnaldo Carvalho de Melo return printed;
518bf382ceSArnaldo Carvalho de Melo }
52