Something went wrong. Try again.
(I'm so sorry!) Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677// SPDX-License-Identifier: GPL-2.0// Copyright (c) 2018 Facebook
#include <vmlinux.h>#include <bpf/bpf_helpers.h>#include <bpf/bpf_tracing.h>
#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")int kprobe_test(struct pt_regs *ctx){ stack_key = bpf_get_stackid(ctx, &stackmap, 0); return 0;}
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;}
SEC("fentry/bpf_testmod_stacktrace_test")int fentry_test(struct pt_regs *ctx){ /* * Skip 2 bpf_program/trampoline stack entries: * - bpf_prog_bd1f7a949f55fb03_fentry_test * - bpf_trampoline_182536277701 */ stack_key = bpf_get_stackid(ctx, &stackmap, 2); return 0;}
SEC("fexit/bpf_testmod_stacktrace_test")int fexit_test(struct pt_regs *ctx){ /* Skip 2 bpf_program/trampoline stack entries, check fentry_test. */ stack_key = bpf_get_stackid(ctx, &stackmap, 2); return 0;}
char _license[] SEC("license") = "GPL";