diff --git a/agent/src/ebpf/user/profile/perf_profiler.c b/agent/src/ebpf/user/profile/perf_profiler.c index de604830ec6..6be2a72f61e 100644 --- a/agent/src/ebpf/user/profile/perf_profiler.c +++ b/agent/src/ebpf/user/profile/perf_profiler.c @@ -292,16 +292,16 @@ static void set_stack_trace_msg(stack_trace_msg_t * msg, } } -static void reader_lost_cb_a(void *t, u64 lost) +static void reader_lost_cb_a(void *cookie, u64 lost) { - struct bpf_tracer *tracer = (struct bpf_tracer *)t; + struct bpf_tracer *tracer = profiler_tracer; atomic64_add(&tracer->lost, lost); perf_buf_lost_a_count++; } -static void reader_lost_cb_b(void *t, u64 lost) +static void reader_lost_cb_b(void *cookie, u64 lost) { - struct bpf_tracer *tracer = (struct bpf_tracer *)t; + struct bpf_tracer *tracer = profiler_tracer; atomic64_add(&tracer->lost, lost); perf_buf_lost_b_count++; } diff --git a/agent/src/ebpf/user/socket.c b/agent/src/ebpf/user/socket.c index af333513d0e..569d470d90e 100644 --- a/agent/src/ebpf/user/socket.c +++ b/agent/src/ebpf/user/socket.c @@ -942,9 +942,10 @@ static void reader_raw_cb(void *cookie, void *raw, int raw_size) atomic64_add(&q->enqueue_nr, nr); } -static void reader_lost_cb(void *t, uint64_t lost) +static void reader_lost_cb(void *cookie, uint64_t lost) { - struct bpf_tracer *tracer = (struct bpf_tracer *)t; + struct reader_forward_info *fwd_info = cookie; + struct bpf_tracer *tracer = fwd_info->tracer; atomic64_add(&tracer->lost, lost); } diff --git a/agent/src/ebpf/user/tracer.c b/agent/src/ebpf/user/tracer.c index a3fbbad059f..3e0fc0637b1 100644 --- a/agent/src/ebpf/user/tracer.c +++ b/agent/src/ebpf/user/tracer.c @@ -1177,6 +1177,7 @@ static int perf_reader_setup(struct bpf_perf_reader *perf_reader, int thread_nr) fwd_info->queue_id = spread_id; fwd_info->cpu_id = i; + fwd_info->tracer = perf_reader->tracer; ebpf_info("Perf buffer reader cpu(%d) -> queue(%d)\n", fwd_info->cpu_id, fwd_info->queue_id); diff --git a/agent/src/ebpf/user/tracer.h b/agent/src/ebpf/user/tracer.h index 6c4c9e2d871..3a1eff79ef8 100644 --- a/agent/src/ebpf/user/tracer.h +++ b/agent/src/ebpf/user/tracer.h @@ -454,6 +454,7 @@ struct bpf_tracer_param_array { struct reader_forward_info { uint64_t queue_id; int cpu_id; + struct bpf_tracer *tracer; }; extern volatile uint32_t *tracers_lock;