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

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

DEFINITIONS

This source file includes following definitions.
  1. syscall_arg__scnprintf_msg_flags

   1 // SPDX-License-Identifier: LGPL-2.1
   2 #include <sys/types.h>
   3 #include <sys/socket.h>
   4 
   5 #ifndef MSG_PROBE
   6 #define MSG_PROBE                    0x10
   7 #endif
   8 #ifndef MSG_WAITFORONE
   9 #define MSG_WAITFORONE             0x10000
  10 #endif
  11 #ifndef MSG_SENDPAGE_NOTLAST
  12 #define MSG_SENDPAGE_NOTLAST       0x20000
  13 #endif
  14 #ifndef MSG_FASTOPEN
  15 #define MSG_FASTOPEN            0x20000000
  16 #endif
  17 #ifndef MSG_CMSG_CLOEXEC
  18 # define MSG_CMSG_CLOEXEC       0x40000000
  19 #endif
  20 
  21 static size_t syscall_arg__scnprintf_msg_flags(char *bf, size_t size,
  22                                                struct syscall_arg *arg)
  23 {
  24         bool show_prefix = arg->show_string_prefix;
  25         const char *prefix = "MSG_";
  26         int printed = 0, flags = arg->val;
  27 
  28         if (flags == 0)
  29                 return scnprintf(bf, size, "NONE");
  30 #define P_MSG_FLAG(n) \
  31         if (flags & MSG_##n) { \
  32                 printed += scnprintf(bf + printed, size - printed, "%s%s%s", printed ? "|" : "", show_prefix ? prefix : "", #n); \
  33                 flags &= ~MSG_##n; \
  34         }
  35 
  36         P_MSG_FLAG(OOB);
  37         P_MSG_FLAG(PEEK);
  38         P_MSG_FLAG(DONTROUTE);
  39         P_MSG_FLAG(CTRUNC);
  40         P_MSG_FLAG(PROBE);
  41         P_MSG_FLAG(TRUNC);
  42         P_MSG_FLAG(DONTWAIT);
  43         P_MSG_FLAG(EOR);
  44         P_MSG_FLAG(WAITALL);
  45         P_MSG_FLAG(FIN);
  46         P_MSG_FLAG(SYN);
  47         P_MSG_FLAG(CONFIRM);
  48         P_MSG_FLAG(RST);
  49         P_MSG_FLAG(ERRQUEUE);
  50         P_MSG_FLAG(NOSIGNAL);
  51         P_MSG_FLAG(MORE);
  52         P_MSG_FLAG(WAITFORONE);
  53         P_MSG_FLAG(SENDPAGE_NOTLAST);
  54         P_MSG_FLAG(FASTOPEN);
  55         P_MSG_FLAG(CMSG_CLOEXEC);
  56 #undef P_MSG_FLAG
  57 
  58         if (flags)
  59                 printed += scnprintf(bf + printed, size - printed, "%s%#x", printed ? "|" : "", flags);
  60 
  61         return printed;
  62 }
  63 
  64 #define SCA_MSG_FLAGS syscall_arg__scnprintf_msg_flags

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