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