File tree Expand file tree Collapse file tree 1 file changed +46
-0
lines changed Expand file tree Collapse file tree 1 file changed +46
-0
lines changed Original file line number Diff line number Diff line change
1
+ #include <linux/bpf.h>
2
+ #include <bpf/bpf_helpers.h>
3
+
4
+ #define u64 unsigned long long
5
+
6
+ // Define the map
7
+ struct {
8
+ __uint (type , BPF_MAP_TYPE_HASH );
9
+ __type (key , u64 );
10
+ __type (value , u64 );
11
+ __uint (max_entries , 1 );
12
+ } last SEC (".maps" );
13
+
14
+ // Handler for syscall entry
15
+ SEC ("tracepoint/syscalls/sys_enter_execve" )
16
+ int hello (void * ctx ) {
17
+ bpf_printk ("entered" );
18
+ bpf_printk ("multi constant support" );
19
+ return 0 ;
20
+ }
21
+
22
+ // Handler for syscall exit
23
+ SEC ("tracepoint/syscalls/sys_exit_execve" )
24
+ long hello_again (void * ctx ) {
25
+ bpf_printk ("exited" );
26
+
27
+ // Create a key for map lookup
28
+ u64 key = 0 ;
29
+
30
+ // Simple lookup without conditionals
31
+ u64 * tsp = bpf_map_lookup_elem (& last , & key );
32
+ if (tsp != NULL ) {
33
+ u64 delta = bpf_ktime_get_ns () - * tsp ;
34
+ if (delta < 1000000000 ) {
35
+ // output if time is less than 1 second
36
+ bpf_trace_printk ("%d\\n" , delta / 1000000 );
37
+ }
38
+ bpf_map_delete_elem (& last , & key );
39
+ }
40
+ // Get current timestamp
41
+ u64 ts = bpf_ktime_get_ns ();
42
+ bpf_map_update_elem (& last , & key , & ts , BPF_ANY );
43
+ return 0 ;
44
+ }
45
+
46
+ char LICENSE [] SEC ("license" ) = "GPL" ;
You can’t perform that action at this time.
0 commit comments