Merge branch 'bpftool-show-pid'
authorAlexei Starovoitov <ast@kernel.org>
Tue, 23 Jun 2020 00:01:49 +0000 (17:01 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Tue, 23 Jun 2020 00:02:32 +0000 (17:02 -0700)
commitb3eece09e2e69f528a1ab6104861550dec149083
tree4f2cf6abf36ea9c8a85be8b1164976ca5320ae0e
parent1bdb6c9a1c43fdf9b83b2331dfc6229bd2e71d9b
parent075c776658190681d2bf9997306f871d6c8a9b36
Merge branch 'bpftool-show-pid'

Andrii Nakryiko says:

====================
This patch set implements libbpf support for a second kind of special externs,
kernel symbols, in addition to existing Kconfig externs.

Right now, only untyped (const void) externs are supported, which, in
C language, allow only to take their address. In the future, with kernel BTF
getting type info about its own global and per-cpu variables, libbpf will
extend this support with BTF type info, which will allow to also directly
access variable's contents and follow its internal pointers, similarly to how
it's possible today in fentry/fexit programs.

As a first practical use of this functionality, bpftool gained ability to show
PIDs of processes that have open file descriptors for BPF map/program/link/BTF
object. It relies on iter/task_file BPF iterator program to extract this
information efficiently.

There was a bunch of bpftool refactoring (especially Makefile) necessary to
generalize bpftool's internal BPF program use. This includes generalization of
BPF skeletons support, addition of a vmlinux.h generation, extracting and
building minimal subset of bpftool for bootstrapping.

v2->v3:
- fix sec_btf_id check (Hao);

v1->v2:
- docs fixes (Quentin);
- dual GPL/BSD license for pid_inter.bpf.c (Quentin);
- NULL-init kcfg_data (Hao Luo);

rfc->v1:
- show pids, if supported by kernel, always (Alexei);
- switched iter output to binary to support showing process names;
- update man pages;
- fix few minor bugs in libbpf w.r.t. extern iteration.
====================

Signed-off-by: Alexei Starovoitov <ast@kernel.org>