enum bpf_cgroup_storage_type and struct bpf_link are needed both in bpf.h and bpf-cgroup.h. Since we want to break the cgroup -> bpf dependency we need to place it in its own header. We can transform this header into some form of "kernel API" header for BPF if more places want to include a lightweight version of bpf.h. I'm calling it bpf-cgroup-types.h for now mostly because naming is hard... Signed-off-by: Jakub Kicinski <kuba@xxxxxxxxxx> --- include/linux/bpf-cgroup-types.h | 29 +++++++++++++++++++++++++++++ include/linux/bpf.h | 18 +----------------- 2 files changed, 30 insertions(+), 17 deletions(-) create mode 100644 include/linux/bpf-cgroup-types.h diff --git a/include/linux/bpf-cgroup-types.h b/include/linux/bpf-cgroup-types.h new file mode 100644 index 000000000000..c916fd3f4a0f --- /dev/null +++ b/include/linux/bpf-cgroup-types.h @@ -0,0 +1,29 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _BPF_CGROUP_TYPES_H +#define _BPF_CGROUP_TYPES_H + +#include <uapi/linux/bpf.h> + +#include <linux/workqueue.h> + +struct bpf_prog; +struct bpf_link_ops; + +struct bpf_link { + atomic64_t refcnt; + u32 id; + enum bpf_link_type type; + const struct bpf_link_ops *ops; + struct bpf_prog *prog; + struct work_struct work; +}; + +enum bpf_cgroup_storage_type { + BPF_CGROUP_STORAGE_SHARED, + BPF_CGROUP_STORAGE_PERCPU, + __BPF_CGROUP_STORAGE_MAX +}; + +#define MAX_BPF_CGROUP_STORAGE_TYPE __BPF_CGROUP_STORAGE_MAX + +#endif diff --git a/include/linux/bpf.h b/include/linux/bpf.h index 965fffaf0308..1e16243623fe 100644 --- a/include/linux/bpf.h +++ b/include/linux/bpf.h @@ -22,6 +22,7 @@ #include <linux/sched/mm.h> #include <linux/slab.h> #include <linux/percpu-refcount.h> +#include <linux/bpf-cgroup-types.h> #include <linux/bpfptr.h> struct bpf_verifier_env; @@ -550,14 +551,6 @@ struct bpf_prog_offload { u32 jited_len; }; -enum bpf_cgroup_storage_type { - BPF_CGROUP_STORAGE_SHARED, - BPF_CGROUP_STORAGE_PERCPU, - __BPF_CGROUP_STORAGE_MAX -}; - -#define MAX_BPF_CGROUP_STORAGE_TYPE __BPF_CGROUP_STORAGE_MAX - /* The longest tracepoint has 12 args. * See include/trace/bpf_probe.h */ @@ -958,15 +951,6 @@ struct bpf_array_aux { struct work_struct work; }; -struct bpf_link { - atomic64_t refcnt; - u32 id; - enum bpf_link_type type; - const struct bpf_link_ops *ops; - struct bpf_prog *prog; - struct work_struct work; -}; - struct bpf_link_ops { void (*release)(struct bpf_link *link); void (*dealloc)(struct bpf_link *link); -- 2.31.1