Linux Perf
pkey_alloc.c
Go to the documentation of this file.
1 /*
2  * trace/beauty/pkey_alloc.c
3  *
4  * Copyright (C) 2017, Red Hat Inc, Arnaldo Carvalho de Melo <acme@redhat.com>
5  *
6  * Released under the GPL v2. (and only v2, not any later version)
7  */
8 
9 #include "trace/beauty/beauty.h"
10 #include <linux/kernel.h>
11 #include <linux/log2.h>
12 
13 static size_t pkey_alloc__scnprintf_access_rights(int access_rights, char *bf, size_t size)
14 {
15  int i, printed = 0;
16 
17 #include "trace/beauty/generated/pkey_alloc_access_rights_array.c"
18  static DEFINE_STRARRAY(pkey_alloc_access_rights);
19 
20  if (access_rights == 0) {
21  const char *s = strarray__pkey_alloc_access_rights.entries[0];
22  if (s)
23  return scnprintf(bf, size, "%s", s);
24  return scnprintf(bf, size, "%d", 0);
25  }
26 
27  for (i = 1; i < strarray__pkey_alloc_access_rights.nr_entries; ++i) {
28  int bit = 1 << (i - 1);
29 
30  if (!(access_rights & bit))
31  continue;
32 
33  if (printed != 0)
34  printed += scnprintf(bf + printed, size - printed, "|");
35 
36  if (strarray__pkey_alloc_access_rights.entries[i] != NULL)
37  printed += scnprintf(bf + printed, size - printed, "%s", strarray__pkey_alloc_access_rights.entries[i]);
38  else
39  printed += scnprintf(bf + printed, size - printed, "0x%#", bit);
40  }
41 
42  return printed;
43 }
44 
46 {
47  unsigned long cmd = arg->val;
48 
49  return pkey_alloc__scnprintf_access_rights(cmd, bf, size);
50 }
#define DEFINE_STRARRAY(array)
Definition: beauty.h:15
size_t size
Definition: evsel.c:60
static size_t pkey_alloc__scnprintf_access_rights(int access_rights, char *bf, size_t size)
Definition: pkey_alloc.c:13
size_t syscall_arg__scnprintf_pkey_alloc_access_rights(char *bf, size_t size, struct syscall_arg *arg)
Definition: pkey_alloc.c:45
unsigned long val
Definition: beauty.h:44