// SPDX-License-Identifier: GPL-2.0 // Copyright (c) 2018 Facebook #include #include #include #ifndef PERF_MAX_STACK_DEPTH #define PERF_MAX_STACK_DEPTH 127 #endif typedef __u64 stack_trace_t[PERF_MAX_STACK_DEPTH]; struct { __uint(type, BPF_MAP_TYPE_STACK_TRACE); __uint(max_entries, 16384); __type(key, __u32); __type(value, stack_trace_t); } stackmap SEC(".maps"); extern bool CONFIG_UNWINDER_ORC __kconfig __weak; /* * This function is here to have CONFIG_UNWINDER_ORC * used and added to object BTF. */ int unused(void) { return CONFIG_UNWINDER_ORC ? 0 : 1; } __u32 stack_key; SEC("kprobe.multi") int kprobe_multi_test(struct pt_regs *ctx) { stack_key = bpf_get_stackid(ctx, &stackmap, 0); return 0; } SEC("raw_tp/bpf_testmod_test_read") int rawtp_test(void *ctx) { /* Skip ebpf program entry in the stack. */ stack_key = bpf_get_stackid(ctx, &stackmap, 0); return 0; } char _license[] SEC("license") = "GPL";