18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci// Copyright (c) 2019 Facebook 38c2ecf20Sopenharmony_ci#include <linux/sched.h> 48c2ecf20Sopenharmony_ci#include <linux/ptrace.h> 58c2ecf20Sopenharmony_ci#include <stdint.h> 68c2ecf20Sopenharmony_ci#include <stddef.h> 78c2ecf20Sopenharmony_ci#include <stdbool.h> 88c2ecf20Sopenharmony_ci#include <linux/bpf.h> 98c2ecf20Sopenharmony_ci#include <bpf/bpf_helpers.h> 108c2ecf20Sopenharmony_ci#include <bpf/bpf_tracing.h> 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_cichar _license[] SEC("license") = "GPL"; 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ciSEC("raw_tracepoint/kfree_skb") 158c2ecf20Sopenharmony_ciint nested_loops(volatile struct pt_regs* ctx) 168c2ecf20Sopenharmony_ci{ 178c2ecf20Sopenharmony_ci int i, j, sum = 0, m; 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci for (j = 0; j < 300; j++) 208c2ecf20Sopenharmony_ci for (i = 0; i < j; i++) { 218c2ecf20Sopenharmony_ci if (j & 1) 228c2ecf20Sopenharmony_ci m = PT_REGS_RC(ctx); 238c2ecf20Sopenharmony_ci else 248c2ecf20Sopenharmony_ci m = j; 258c2ecf20Sopenharmony_ci sum += i * m; 268c2ecf20Sopenharmony_ci } 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ci return sum; 298c2ecf20Sopenharmony_ci} 30