Blame view

samples/bpf/syscall_tp_kern.c 1.4 KB
25763b3c8   Thomas Gleixner   treewide: Replace...
1
  // SPDX-License-Identifier: GPL-2.0-only
1da236b6b   Yonghong Song   bpf: add a test c...
2
  /* Copyright (c) 2017 Facebook
1da236b6b   Yonghong Song   bpf: add a test c...
3
4
   */
  #include <uapi/linux/bpf.h>
7cf245a37   Toke Høiland-Jørgensen   samples/bpf: Use ...
5
  #include <bpf/bpf_helpers.h>
1da236b6b   Yonghong Song   bpf: add a test c...
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  
  struct syscalls_enter_open_args {
  	unsigned long long unused;
  	long syscall_nr;
  	long filename_ptr;
  	long flags;
  	long mode;
  };
  
  struct syscalls_exit_open_args {
  	unsigned long long unused;
  	long syscall_nr;
  	long ret;
  };
f0c328f8a   Daniel T. Lee   samples: bpf: Ref...
20
21
22
23
24
25
  struct {
  	__uint(type, BPF_MAP_TYPE_ARRAY);
  	__type(key, u32);
  	__type(value, u32);
  	__uint(max_entries, 1);
  } enter_open_map SEC(".maps");
1da236b6b   Yonghong Song   bpf: add a test c...
26

f0c328f8a   Daniel T. Lee   samples: bpf: Ref...
27
28
29
30
31
32
  struct {
  	__uint(type, BPF_MAP_TYPE_ARRAY);
  	__type(key, u32);
  	__type(value, u32);
  	__uint(max_entries, 1);
  } exit_open_map SEC(".maps");
1da236b6b   Yonghong Song   bpf: add a test c...
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
  
  static __always_inline void count(void *map)
  {
  	u32 key = 0;
  	u32 *value, init_val = 1;
  
  	value = bpf_map_lookup_elem(map, &key);
  	if (value)
  		*value += 1;
  	else
  		bpf_map_update_elem(map, &key, &init_val, BPF_NOEXIST);
  }
  
  SEC("tracepoint/syscalls/sys_enter_open")
  int trace_enter_open(struct syscalls_enter_open_args *ctx)
  {
fe3300897   Daniel T. Lee   samples: bpf: fix...
49
50
51
52
53
54
55
56
  	count(&enter_open_map);
  	return 0;
  }
  
  SEC("tracepoint/syscalls/sys_enter_openat")
  int trace_enter_open_at(struct syscalls_enter_open_args *ctx)
  {
  	count(&enter_open_map);
1da236b6b   Yonghong Song   bpf: add a test c...
57
58
59
60
61
62
  	return 0;
  }
  
  SEC("tracepoint/syscalls/sys_exit_open")
  int trace_enter_exit(struct syscalls_exit_open_args *ctx)
  {
fe3300897   Daniel T. Lee   samples: bpf: fix...
63
64
65
66
67
68
69
70
  	count(&exit_open_map);
  	return 0;
  }
  
  SEC("tracepoint/syscalls/sys_exit_openat")
  int trace_enter_exit_at(struct syscalls_exit_open_args *ctx)
  {
  	count(&exit_open_map);
1da236b6b   Yonghong Song   bpf: add a test c...
71
72
  	return 0;
  }