bpf: introduce BPF_MAP_TYPE_STACK_TRACE
add new map type to store stack traces and corresponding helper bpf_get_stackid(ctx, map, flags) - walk user or kernel stack and return id @ctx: struct pt_regs* @map: pointer to stack_trace map @flags: bits 0-7 - numer of stack frames to skip bit 8 - collect user stack instead of kernel bit 9 - compare stacks by hash only bit 10 - if two different stacks hash into the same stackid discard old other bits - reserved Return: >= 0 stackid on success or negative error stackid is a 32-bit integer handle that can be further combined with other data (including other stackid) and used as a key into maps. Userspace will access stackmap using standard lookup/delete syscall commands to retrieve full stack trace for given stackid. Signed-off-by:Alexei Starovoitov <ast@kernel.org> Signed-off-by:
David S. Miller <davem@davemloft.net>
Showing
- include/linux/bpf.h 1 addition, 0 deletionsinclude/linux/bpf.h
- include/uapi/linux/bpf.h 21 additions, 0 deletionsinclude/uapi/linux/bpf.h
- kernel/bpf/Makefile 3 additions, 0 deletionskernel/bpf/Makefile
- kernel/bpf/stackmap.c 237 additions, 0 deletionskernel/bpf/stackmap.c
- kernel/bpf/verifier.c 5 additions, 1 deletionkernel/bpf/verifier.c
- kernel/trace/bpf_trace.c 2 additions, 0 deletionskernel/trace/bpf_trace.c
Loading
Please register or sign in to comment