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 Starovoitovint 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