Merge tag 'acpi-5.18-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael...
[platform/kernel/linux-starfive.git] / tools / lib / bpf / libbpf.h
index c1b0c2e..05dde85 100644 (file)
@@ -425,6 +425,29 @@ bpf_program__attach_kprobe_opts(const struct bpf_program *prog,
                                 const char *func_name,
                                 const struct bpf_kprobe_opts *opts);
 
+struct bpf_kprobe_multi_opts {
+       /* size of this struct, for forward/backward compatibility */
+       size_t sz;
+       /* array of function symbols to attach */
+       const char **syms;
+       /* array of function addresses to attach */
+       const unsigned long *addrs;
+       /* array of user-provided values fetchable through bpf_get_attach_cookie */
+       const __u64 *cookies;
+       /* number of elements in syms/addrs/cookies arrays */
+       size_t cnt;
+       /* create return kprobes */
+       bool retprobe;
+       size_t :0;
+};
+
+#define bpf_kprobe_multi_opts__last_field retprobe
+
+LIBBPF_API struct bpf_link *
+bpf_program__attach_kprobe_multi_opts(const struct bpf_program *prog,
+                                     const char *pattern,
+                                     const struct bpf_kprobe_multi_opts *opts);
+
 struct bpf_uprobe_opts {
        /* size of this struct, for forward/backward compatiblity */
        size_t sz;
@@ -1289,6 +1312,35 @@ LIBBPF_API int bpf_object__attach_skeleton(struct bpf_object_skeleton *s);
 LIBBPF_API void bpf_object__detach_skeleton(struct bpf_object_skeleton *s);
 LIBBPF_API void bpf_object__destroy_skeleton(struct bpf_object_skeleton *s);
 
+struct bpf_var_skeleton {
+       const char *name;
+       struct bpf_map **map;
+       void **addr;
+};
+
+struct bpf_object_subskeleton {
+       size_t sz; /* size of this struct, for forward/backward compatibility */
+
+       const struct bpf_object *obj;
+
+       int map_cnt;
+       int map_skel_sz; /* sizeof(struct bpf_map_skeleton) */
+       struct bpf_map_skeleton *maps;
+
+       int prog_cnt;
+       int prog_skel_sz; /* sizeof(struct bpf_prog_skeleton) */
+       struct bpf_prog_skeleton *progs;
+
+       int var_cnt;
+       int var_skel_sz; /* sizeof(struct bpf_var_skeleton) */
+       struct bpf_var_skeleton *vars;
+};
+
+LIBBPF_API int
+bpf_object__open_subskeleton(struct bpf_object_subskeleton *s);
+LIBBPF_API void
+bpf_object__destroy_subskeleton(struct bpf_object_subskeleton *s);
+
 struct gen_loader_opts {
        size_t sz; /* size of this struct, for forward/backward compatiblity */
        const char *data;