@@ -10,6 +10,7 @@ use rex::tracepoint::*;
10
10
use rex:: kprobe:: kprobe;
11
11
use rex:: map:: { RexArrayMap , RexHashMap , RexPerfEventArray } ;
12
12
use rex:: pt_regs:: PtRegs ;
13
+ use rex:: utils:: PerfEventMaskedCPU ;
13
14
use core:: ffi:: CStr ;
14
15
15
16
#[ repr( C ) ]
@@ -21,7 +22,7 @@ struct Config {
21
22
#[ repr( C ) ]
22
23
#[ derive( Clone , Copy , core:: Default ) ]
23
24
struct SyscallData {
24
- id : u32 ,
25
+ id : i64 ,
25
26
}
26
27
27
28
#[ repr( C ) ]
@@ -55,8 +56,8 @@ fn exit_function(obj: &kprobe, ctx: &mut PtRegs) -> Result {
55
56
bpf_printk ! ( obj, c"Exit function.\n " ) ;
56
57
}
57
58
58
- #[ rex_tracepoint( name = "syscalls/sys_enter_dup " , tp_type = "Void " ) ]
59
- fn rex_prog1( obj : & tracepoint , _ : tp_ctx ) -> Result {
59
+ #[ rex_tracepoint( name = "raw_syscalls/sys_enter " , tp_type = "RawSyscallsEnter " ) ]
60
+ fn rex_prog1( obj : & tracepoint , ctx : tp_ctx ) -> Result {
60
61
let mut data = SyscallData :: new ( ) ;
61
62
let key_config = 0 ;
62
63
let key_trace = 0 ;
@@ -95,5 +96,16 @@ fn rex_prog1(obj: &tracepoint, _: tp_ctx) -> Result {
95
96
return Err ( 1 ) ;
96
97
}
97
98
99
+ let id = match ctx {
100
+ RawSyscallsEnter ( args) => args. id ,
101
+ _ => 0 ,
102
+ } ;
103
+
104
+ data. id = id;
105
+
106
+ EVENTS . output ( obj, ctx, data, PerfEventMaskedCPU :: current_cpu ( ) ) ;
107
+
108
+ bpf_printk ! ( obj, c"Sending syscall id %llu.\n " , id as u64 ) ;
109
+
98
110
Ok ( 0 )
99
111
}
0 commit comments