1ec151037SJoanne Koong // SPDX-License-Identifier: GPL-2.0
2ec151037SJoanne Koong /* Copyright (c) 2021 Facebook */
3ec151037SJoanne Koong 
4ec151037SJoanne Koong #include "vmlinux.h"
5ec151037SJoanne Koong #include <bpf/bpf_helpers.h>
6e91d280cSNaveen N. Rao #include "bpf_misc.h"
7ec151037SJoanne Koong 
8ec151037SJoanne Koong char _license[] SEC("license") = "GPL";
9ec151037SJoanne Koong 
10ec151037SJoanne Koong u32 nr_loops;
11ec151037SJoanne Koong long hits;
12ec151037SJoanne Koong 
empty_callback(__u32 index,void * data)13ec151037SJoanne Koong static int empty_callback(__u32 index, void *data)
14ec151037SJoanne Koong {
15ec151037SJoanne Koong 	return 0;
16ec151037SJoanne Koong }
17ec151037SJoanne Koong 
outer_loop(__u32 index,void * data)18*0ade0b82SEduard Zingerman static int outer_loop(__u32 index, void *data)
19*0ade0b82SEduard Zingerman {
20*0ade0b82SEduard Zingerman 	bpf_loop(nr_loops, empty_callback, NULL, 0);
21*0ade0b82SEduard Zingerman 	__sync_add_and_fetch(&hits, nr_loops);
22*0ade0b82SEduard Zingerman 	return 0;
23*0ade0b82SEduard Zingerman }
24*0ade0b82SEduard Zingerman 
25e91d280cSNaveen N. Rao SEC("fentry/" SYS_PREFIX "sys_getpgid")
benchmark(void * ctx)26ec151037SJoanne Koong int benchmark(void *ctx)
27ec151037SJoanne Koong {
28*0ade0b82SEduard Zingerman 	bpf_loop(1000, outer_loop, NULL, 0);
29ec151037SJoanne Koong 	return 0;
30ec151037SJoanne Koong }
31