Re: [PATCH RFC bpf-next v1 5/8] bpf: Introduce a new program type bpf_view.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 1/6/22 1:50 PM, Hao Luo wrote:
Introduce a new program type called "bpf_view", which can be used to
print out a kernel object's state to a seq file. So the signature of
this program consists of two parameters: a seq file and a kernel object.
Currently only 'struct cgroup' is supported.

The following patches will introduce a call site for this program type
and allow users to customize the format of printing out the state of
kernel objects to userspace.

Signed-off-by: Hao Luo <haoluo@xxxxxxxxxx>
---
  include/linux/bpf.h            |   4 +
  include/uapi/linux/bpf.h       |   2 +
  kernel/bpf/Makefile            |   2 +-
  kernel/bpf/bpf_view.c          | 179 +++++++++++++++++++++++++++++++++
  kernel/bpf/bpf_view.h          |  24 +++++
  kernel/bpf/syscall.c           |   3 +
  kernel/bpf/verifier.c          |   6 ++
  kernel/trace/bpf_trace.c       |  12 ++-
  tools/include/uapi/linux/bpf.h |   2 +
  9 files changed, 230 insertions(+), 4 deletions(-)
  create mode 100644 kernel/bpf/bpf_view.c
  create mode 100644 kernel/bpf/bpf_view.h

diff --git a/include/linux/bpf.h b/include/linux/bpf.h
index 2ec693c3d6f6..16f582dfff7e 100644
--- a/include/linux/bpf.h
+++ b/include/linux/bpf.h
@@ -1622,6 +1622,10 @@ void bpf_iter_map_show_fdinfo(const struct bpf_iter_aux_info *aux,
  int bpf_iter_map_fill_link_info(const struct bpf_iter_aux_info *aux,
  				struct bpf_link_info *info);
+bool bpf_view_prog_supported(struct bpf_prog *prog);
+int bpf_view_link_attach(const union bpf_attr *attr, bpfptr_t uattr,
+			 struct bpf_prog *prog);
+
  int map_set_for_each_callback_args(struct bpf_verifier_env *env,
  				   struct bpf_func_state *caller,
  				   struct bpf_func_state *callee);
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
index b0383d371b9a..efa0f21d13ba 100644
--- a/include/uapi/linux/bpf.h
+++ b/include/uapi/linux/bpf.h
@@ -982,6 +982,7 @@ enum bpf_attach_type {
  	BPF_MODIFY_RETURN,
  	BPF_LSM_MAC,
  	BPF_TRACE_ITER,
+	BPF_TRACE_VIEW,

Please add the new entry to the end of enum list. Otherwise,
this will break backward compatibility.

  	BPF_CGROUP_INET4_GETPEERNAME,
  	BPF_CGROUP_INET6_GETPEERNAME,
  	BPF_CGROUP_INET4_GETSOCKNAME,
@@ -1009,6 +1010,7 @@ enum bpf_link_type {
  	BPF_LINK_TYPE_NETNS = 5,
  	BPF_LINK_TYPE_XDP = 6,
  	BPF_LINK_TYPE_PERF_EVENT = 7,
+	BPF_LINK_TYPE_VIEW = 8,
MAX_BPF_LINK_TYPE,
  };
[...]



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux