brintos

brintos / linux-shallow public Read only

0
0
Text · 1003 B · a6514a6 Raw
52 lines · c
1// SPDX-License-Identifier: LGPL-2.12 3#include "trace/beauty/beauty.h"4#include <linux/kernel.h>5#include <linux/fcntl.h>6 7#ifndef LOCK_MAND8#define LOCK_MAND	 329#endif10 11#ifndef LOCK_READ12#define LOCK_READ	 6413#endif14 15#ifndef LOCK_WRITE16#define LOCK_WRITE	12817#endif18 19#ifndef LOCK_RW20#define LOCK_RW		19221#endif22 23size_t syscall_arg__scnprintf_flock(char *bf, size_t size, struct syscall_arg *arg)24{25	bool show_prefix = arg->show_string_prefix;26	const char *prefix = "LOCK_";27	int printed = 0, op = arg->val;28 29	if (op == 0)30		return scnprintf(bf, size, "NONE");31#define	P_CMD(cmd) \32	if ((op & LOCK_##cmd) == LOCK_##cmd) { \33		printed += scnprintf(bf + printed, size - printed, "%s%s%s", printed ? "|" : "", show_prefix ? prefix : "", #cmd); \34		op &= ~LOCK_##cmd; \35	}36 37	P_CMD(SH);38	P_CMD(EX);39	P_CMD(NB);40	P_CMD(UN);41	P_CMD(MAND);42	P_CMD(RW);43	P_CMD(READ);44	P_CMD(WRITE);45#undef P_OP46 47	if (op)48		printed += scnprintf(bf + printed, size - printed, "%s%#x", printed ? "|" : "", op);49 50	return printed;51}52