github.com/castai/kvisor@v1.7.1-0.20240516114728-b3572a2607b5/pkg/ebpftracer/c/headers/common/debug.h (about)

     1  #ifndef __DEBUG_H__
     2  #define __DEBUG_H__
     3  
     4  #define DEBUG_NAME_LEN 16
     5  #define TASK_COMM_LEN 16
     6  
     7  struct debug_event_t {
     8      u32 pid;
     9      u32 tid;
    10      u64 ts;
    11      u64 cgroup_id;
    12      char name[DEBUG_NAME_LEN];
    13      char task[TASK_COMM_LEN];
    14      u64 arg1;
    15      u64 arg2;
    16      u64 arg3;
    17      u64 arg4;
    18      // For sock.
    19  //    u64 sock_addr;
    20  //    struct tuple_t tuple;
    21  };
    22  
    23  struct {
    24  	__uint(type, BPF_MAP_TYPE_PERF_EVENT_ARRAY);
    25  	__uint(key_size, sizeof(u32));
    26  	__uint(value_size, sizeof(u32));
    27  } debug_events SEC(".maps");
    28  
    29  static __always_inline void fill_debug_event_name(struct debug_event_t *e, const char *name) {
    30      for (int i = 0; i < DEBUG_NAME_LEN; i++) {
    31          e->name[i] = name[i];
    32      }
    33  }
    34  
    35  static __always_inline void init_debug_event(const char *name, struct debug_event_t *event) {
    36      event->ts = bpf_ktime_get_ns();
    37      u64 pid_tgid = bpf_get_current_pid_tgid();
    38      u32 pid = pid_tgid >> 32;
    39      u32 tid = pid_tgid;
    40      event->pid = pid;
    41      event->tid = tid;
    42      event->cgroup_id = bpf_get_current_cgroup_id();
    43      bpf_get_current_comm(&event->task, sizeof(event->task));
    44      fill_debug_event_name(event, name);
    45  }
    46  
    47  static __always_inline void output_debug(void *ctx, const char *name) {
    48      struct debug_event_t event = {0};
    49      init_debug_event(name, &event);
    50  
    51      bpf_perf_event_output(ctx, &debug_events, BPF_F_CURRENT_CPU, &event, sizeof(event));
    52  }
    53  
    54  static __always_inline void output_debug1(void *ctx, const char *name, u64 arg1) {
    55      struct debug_event_t event = {0};
    56      init_debug_event(name, &event);
    57      event.arg1 = arg1;
    58  
    59      bpf_perf_event_output(ctx, &debug_events, BPF_F_CURRENT_CPU, &event, sizeof(event));
    60  }
    61  
    62  static __always_inline void output_debug2(void *ctx, const char *name, u64 arg1, u64 arg2) {
    63      struct debug_event_t event = {0};
    64      init_debug_event(name, &event);
    65      event.arg1 = arg1;
    66      event.arg2 = arg2;
    67  
    68      bpf_perf_event_output(ctx, &debug_events, BPF_F_CURRENT_CPU, &event, sizeof(event));
    69  }
    70  
    71  static __always_inline void output_debug3(void *ctx, const char *name, u64 arg1, u64 arg2, u64 arg3) {
    72      struct debug_event_t event = {0};
    73      init_debug_event(name, &event);
    74      event.arg1 = arg1;
    75      event.arg2 = arg2;
    76      event.arg3 = arg3;
    77  
    78      bpf_perf_event_output(ctx, &debug_events, BPF_F_CURRENT_CPU, &event, sizeof(event));
    79  }
    80  
    81  static __always_inline void output_debug4(void *ctx, const char *name, u64 arg1, u64 arg2, u64 arg3, u64 arg4) {
    82      struct debug_event_t event = {0};
    83      init_debug_event(name, &event);
    84      event.arg1 = arg1;
    85      event.arg2 = arg2;
    86      event.arg3 = arg3;
    87      event.arg4 = arg4;
    88  
    89      bpf_perf_event_output(ctx, &debug_events, BPF_F_CURRENT_CPU, &event, sizeof(event));
    90  }
    91  //
    92  //static __always_inline void output_debug_sock(void *ctx, const char *name, struct sock *sk) {
    93  //    if (cfg->debug == 0) {
    94  //        return;
    95  //    }
    96  //
    97  //    struct debug_event_t event = {0};
    98  //    init_debug_event(name, &event);
    99  //    event.sock_addr = (u64) (void *)sk;
   100  //    bpf_get_current_comm(&event.task, sizeof(event.task));
   101  //    fill_tuple(&event.tuple, sk);
   102  //    fill_debug_event_name(&event, name);
   103  //
   104  //    bpf_perf_event_output(ctx, &debug_events, BPF_F_CURRENT_CPU, &event, sizeof(event));
   105  //}
   106  
   107  #endif