root/tools/perf/trace/beauty/flock.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. syscall_arg__scnprintf_flock

   1 // SPDX-License-Identifier: LGPL-2.1
   2 
   3 #include "trace/beauty/beauty.h"
   4 #include <linux/kernel.h>
   5 #include <uapi/linux/fcntl.h>
   6 
   7 #ifndef LOCK_MAND
   8 #define LOCK_MAND        32
   9 #endif
  10 
  11 #ifndef LOCK_READ
  12 #define LOCK_READ        64
  13 #endif
  14 
  15 #ifndef LOCK_WRITE
  16 #define LOCK_WRITE      128
  17 #endif
  18 
  19 #ifndef LOCK_RW
  20 #define LOCK_RW         192
  21 #endif
  22 
  23 size_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_OP
  46 
  47         if (op)
  48                 printed += scnprintf(bf + printed, size - printed, "%s%#x", printed ? "|" : "", op);
  49 
  50         return printed;
  51 }

/* [<][>][^][v][top][bottom][index][help] */