github.com/castai/kvisor@v1.7.1-0.20240516114728-b3572a2607b5/pkg/ebpftracer/c/headers/common/arguments.h (about) 1 #ifndef __COMMON_ARGUMENTS_H__ 2 #define __COMMON_ARGUMENTS_H__ 3 4 #include <vmlinux.h> 5 6 #include <common/common.h> 7 8 // PROTOTYPES 9 10 statfunc int save_args(args_t *, u32); 11 statfunc int load_args(args_t *, u32); 12 statfunc int del_args(u32); 13 14 // FUNCTIONS 15 16 statfunc int save_args(args_t *args, u32 event_id) 17 { 18 u64 id = event_id; 19 u32 tid = bpf_get_current_pid_tgid(); 20 id = id << 32 | tid; 21 bpf_map_update_elem(&args_map, &id, args, BPF_ANY); 22 23 return 0; 24 } 25 26 statfunc int load_args(args_t *args, u32 event_id) 27 { 28 args_t *saved_args; 29 u32 tid = bpf_get_current_pid_tgid(); 30 u64 id = event_id; 31 id = id << 32 | tid; 32 33 saved_args = bpf_map_lookup_elem(&args_map, &id); 34 if (saved_args == 0) { 35 // missed entry or not a container 36 return -1; 37 } 38 39 args->args[0] = saved_args->args[0]; 40 args->args[1] = saved_args->args[1]; 41 args->args[2] = saved_args->args[2]; 42 args->args[3] = saved_args->args[3]; 43 args->args[4] = saved_args->args[4]; 44 args->args[5] = saved_args->args[5]; 45 46 return 0; 47 } 48 49 statfunc int del_args(u32 event_id) 50 { 51 u32 tid = bpf_get_current_pid_tgid(); 52 u64 id = event_id; 53 id = id << 32 | tid; 54 55 bpf_map_delete_elem(&args_map, &id); 56 57 return 0; 58 } 59 60 #endif