Contributors: 3
| Author |
Tokens |
Token Proportion |
Commits |
Commit Proportion |
| Jiri Olsa |
238 |
97.14% |
5 |
71.43% |
| Andrii Nakryiko |
5 |
2.04% |
1 |
14.29% |
| Martin KaFai Lau |
2 |
0.82% |
1 |
14.29% |
| Total |
245 |
|
7 |
|
// 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";