1b061017fSAlexei Starovoitov // SPDX-License-Identifier: GPL-2.0
2b061017fSAlexei Starovoitov // Copyright (c) 2019 Facebook
3b061017fSAlexei Starovoitov #include <linux/sched.h>
4b061017fSAlexei Starovoitov #include <linux/ptrace.h>
5b061017fSAlexei Starovoitov #include <stdint.h>
6b061017fSAlexei Starovoitov #include <stddef.h>
7b061017fSAlexei Starovoitov #include <stdbool.h>
8b061017fSAlexei Starovoitov #include <linux/bpf.h>
93e689141SToke Høiland-Jørgensen #include <bpf/bpf_helpers.h>
103e689141SToke Høiland-Jørgensen #include <bpf/bpf_tracing.h>
11b061017fSAlexei Starovoitov 
12b061017fSAlexei Starovoitov char _license[] SEC("license") = "GPL";
13b061017fSAlexei Starovoitov 
14b061017fSAlexei Starovoitov SEC("raw_tracepoint/kfree_skb")
nested_loops(volatile struct pt_regs * ctx)15b061017fSAlexei Starovoitov int nested_loops(volatile struct pt_regs* ctx)
16b061017fSAlexei Starovoitov {
17b061017fSAlexei Starovoitov 	int i, j, sum = 0, m;
18b061017fSAlexei Starovoitov 
19b061017fSAlexei Starovoitov 	for (j = 0; j < 300; j++)
20b061017fSAlexei Starovoitov 		for (i = 0; i < j; i++) {
21b061017fSAlexei Starovoitov 			if (j & 1)
22af3c24e0SIlya Leoshkevich 				m = PT_REGS_RC(ctx);
23b061017fSAlexei Starovoitov 			else
24b061017fSAlexei Starovoitov 				m = j;
25b061017fSAlexei Starovoitov 			sum += i * m;
26b061017fSAlexei Starovoitov 		}
27b061017fSAlexei Starovoitov 
28b061017fSAlexei Starovoitov 	return sum;
29b061017fSAlexei Starovoitov }
30