1111#include <linux/perf_event.h>
1212#include <uapi/linux/btf.h>
1313#include <linux/rcupdate_trace.h>
14+ #include <linux/btf_ids.h>
1415
1516#include "map_in_map.h"
1617
@@ -680,7 +681,7 @@ static int bpf_for_each_array_elem(struct bpf_map *map, bpf_callback_t callback_
680681 return num_elems ;
681682}
682683
683- static int array_map_btf_id ;
684+ BTF_ID_LIST_SINGLE ( array_map_btf_ids , struct , bpf_array )
684685const struct bpf_map_ops array_map_ops = {
685686 .map_meta_equal = array_map_meta_equal ,
686687 .map_alloc_check = array_map_alloc_check ,
@@ -701,12 +702,10 @@ const struct bpf_map_ops array_map_ops = {
701702 .map_update_batch = generic_map_update_batch ,
702703 .map_set_for_each_callback_args = map_set_for_each_callback_args ,
703704 .map_for_each_callback = bpf_for_each_array_elem ,
704- .map_btf_name = "bpf_array" ,
705- .map_btf_id = & array_map_btf_id ,
705+ .map_btf_id = & array_map_btf_ids [0 ],
706706 .iter_seq_info = & iter_seq_info ,
707707};
708708
709- static int percpu_array_map_btf_id ;
710709const struct bpf_map_ops percpu_array_map_ops = {
711710 .map_meta_equal = bpf_map_meta_equal ,
712711 .map_alloc_check = array_map_alloc_check ,
@@ -722,8 +721,7 @@ const struct bpf_map_ops percpu_array_map_ops = {
722721 .map_update_batch = generic_map_update_batch ,
723722 .map_set_for_each_callback_args = map_set_for_each_callback_args ,
724723 .map_for_each_callback = bpf_for_each_array_elem ,
725- .map_btf_name = "bpf_array" ,
726- .map_btf_id = & percpu_array_map_btf_id ,
724+ .map_btf_id = & array_map_btf_ids [0 ],
727725 .iter_seq_info = & iter_seq_info ,
728726};
729727
@@ -1102,7 +1100,6 @@ static void prog_array_map_free(struct bpf_map *map)
11021100 * Thus, prog_array_map cannot be used as an inner_map
11031101 * and map_meta_equal is not implemented.
11041102 */
1105- static int prog_array_map_btf_id ;
11061103const struct bpf_map_ops prog_array_map_ops = {
11071104 .map_alloc_check = fd_array_map_alloc_check ,
11081105 .map_alloc = prog_array_map_alloc ,
@@ -1118,8 +1115,7 @@ const struct bpf_map_ops prog_array_map_ops = {
11181115 .map_fd_sys_lookup_elem = prog_fd_array_sys_lookup_elem ,
11191116 .map_release_uref = prog_array_map_clear ,
11201117 .map_seq_show_elem = prog_array_map_seq_show_elem ,
1121- .map_btf_name = "bpf_array" ,
1122- .map_btf_id = & prog_array_map_btf_id ,
1118+ .map_btf_id = & array_map_btf_ids [0 ],
11231119};
11241120
11251121static struct bpf_event_entry * bpf_event_entry_gen (struct file * perf_file ,
@@ -1208,7 +1204,6 @@ static void perf_event_fd_array_map_free(struct bpf_map *map)
12081204 fd_array_map_free (map );
12091205}
12101206
1211- static int perf_event_array_map_btf_id ;
12121207const struct bpf_map_ops perf_event_array_map_ops = {
12131208 .map_meta_equal = bpf_map_meta_equal ,
12141209 .map_alloc_check = fd_array_map_alloc_check ,
@@ -1221,8 +1216,7 @@ const struct bpf_map_ops perf_event_array_map_ops = {
12211216 .map_fd_put_ptr = perf_event_fd_array_put_ptr ,
12221217 .map_release = perf_event_fd_array_release ,
12231218 .map_check_btf = map_check_no_btf ,
1224- .map_btf_name = "bpf_array" ,
1225- .map_btf_id = & perf_event_array_map_btf_id ,
1219+ .map_btf_id = & array_map_btf_ids [0 ],
12261220};
12271221
12281222#ifdef CONFIG_CGROUPS
@@ -1245,7 +1239,6 @@ static void cgroup_fd_array_free(struct bpf_map *map)
12451239 fd_array_map_free (map );
12461240}
12471241
1248- static int cgroup_array_map_btf_id ;
12491242const struct bpf_map_ops cgroup_array_map_ops = {
12501243 .map_meta_equal = bpf_map_meta_equal ,
12511244 .map_alloc_check = fd_array_map_alloc_check ,
@@ -1257,8 +1250,7 @@ const struct bpf_map_ops cgroup_array_map_ops = {
12571250 .map_fd_get_ptr = cgroup_fd_array_get_ptr ,
12581251 .map_fd_put_ptr = cgroup_fd_array_put_ptr ,
12591252 .map_check_btf = map_check_no_btf ,
1260- .map_btf_name = "bpf_array" ,
1261- .map_btf_id = & cgroup_array_map_btf_id ,
1253+ .map_btf_id = & array_map_btf_ids [0 ],
12621254};
12631255#endif
12641256
@@ -1332,7 +1324,6 @@ static int array_of_map_gen_lookup(struct bpf_map *map,
13321324 return insn - insn_buf ;
13331325}
13341326
1335- static int array_of_maps_map_btf_id ;
13361327const struct bpf_map_ops array_of_maps_map_ops = {
13371328 .map_alloc_check = fd_array_map_alloc_check ,
13381329 .map_alloc = array_of_map_alloc ,
@@ -1345,6 +1336,5 @@ const struct bpf_map_ops array_of_maps_map_ops = {
13451336 .map_fd_sys_lookup_elem = bpf_map_fd_sys_lookup_elem ,
13461337 .map_gen_lookup = array_of_map_gen_lookup ,
13471338 .map_check_btf = map_check_no_btf ,
1348- .map_btf_name = "bpf_array" ,
1349- .map_btf_id = & array_of_maps_map_btf_id ,
1339+ .map_btf_id = & array_map_btf_ids [0 ],
13501340};
0 commit comments