34 lines · c
1// SPDX-License-Identifier: GPL-2.02// Copyright (c) 2020 Facebook3 4#include <linux/bpf.h>5#include <stdint.h>6#include <bpf/bpf_helpers.h>7#include "bpf_misc.h"8 9char _license[] SEC("license") = "GPL";10 11struct {12 __uint(type, BPF_MAP_TYPE_PERF_EVENT_ARRAY);13 __uint(value_size, sizeof(int));14 __uint(key_size, sizeof(int));15} perfbuf SEC(".maps");16 17const volatile int batch_cnt = 0;18 19long sample_val = 42;20long dropped __attribute__((aligned(128))) = 0;21 22SEC("fentry/" SYS_PREFIX "sys_getpgid")23int bench_perfbuf(void *ctx)24{25 int i;26 27 for (i = 0; i < batch_cnt; i++) {28 if (bpf_perf_event_output(ctx, &perfbuf, BPF_F_CURRENT_CPU,29 &sample_val, sizeof(sample_val)))30 __sync_add_and_fetch(&dropped, 1);31 }32 return 0;33}34