OSDN Git Service

bpf: implement bpf_get_current_cgroup_id() helper
authorYonghong Song <yhs@fb.com>
Sun, 3 Jun 2018 22:59:41 +0000 (15:59 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Mon, 4 Jun 2018 01:22:41 +0000 (18:22 -0700)
commitbf6fa2c893c5237b48569a13fa3c673041430b6c
tree59eec94c3c54cf9cf076a38dd6091eca134c46c2
parentea9916ea3ed98d0a1f67f5cbe8ed8ae28e37f8c8
bpf: implement bpf_get_current_cgroup_id() helper

bpf has been used extensively for tracing. For example, bcc
contains an almost full set of bpf-based tools to trace kernel
and user functions/events. Most tracing tools are currently
either filtered based on pid or system-wide.

Containers have been used quite extensively in industry and
cgroup is often used together to provide resource isolation
and protection. Several processes may run inside the same
container. It is often desirable to get container-level tracing
results as well, e.g. syscall count, function count, I/O
activity, etc.

This patch implements a new helper, bpf_get_current_cgroup_id(),
which will return cgroup id based on the cgroup within which
the current task is running.

The later patch will provide an example to show that
userspace can get the same cgroup id so it could
configure a filter or policy in the bpf program based on
task cgroup id.

The helper is currently implemented for tracing. It can
be added to other program types as well when needed.

Acked-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Yonghong Song <yhs@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
include/linux/bpf.h
include/uapi/linux/bpf.h
kernel/bpf/core.c
kernel/bpf/helpers.c
kernel/trace/bpf_trace.c