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
@@ -690,7 +691,7 @@ static int bpf_for_each_array_elem(struct bpf_map *map, bpf_callback_t callback_
690691 return num_elems ;
691692}
692693
693- static int array_map_btf_id ;
694+ BTF_ID_LIST_SINGLE ( array_map_btf_ids , struct , bpf_array )
694695const struct bpf_map_ops array_map_ops = {
695696 .map_meta_equal = array_map_meta_equal ,
696697 .map_alloc_check = array_map_alloc_check ,
@@ -711,12 +712,10 @@ const struct bpf_map_ops array_map_ops = {
711712 .map_update_batch = generic_map_update_batch ,
712713 .map_set_for_each_callback_args = map_set_for_each_callback_args ,
713714 .map_for_each_callback = bpf_for_each_array_elem ,
714- .map_btf_name = "bpf_array" ,
715- .map_btf_id = & array_map_btf_id ,
715+ .map_btf_id = & array_map_btf_ids [0 ],
716716 .iter_seq_info = & iter_seq_info ,
717717};
718718
719- static int percpu_array_map_btf_id ;
720719const struct bpf_map_ops percpu_array_map_ops = {
721720 .map_meta_equal = bpf_map_meta_equal ,
722721 .map_alloc_check = array_map_alloc_check ,
@@ -732,8 +731,7 @@ const struct bpf_map_ops percpu_array_map_ops = {
732731 .map_update_batch = generic_map_update_batch ,
733732 .map_set_for_each_callback_args = map_set_for_each_callback_args ,
734733 .map_for_each_callback = bpf_for_each_array_elem ,
735- .map_btf_name = "bpf_array" ,
736- .map_btf_id = & percpu_array_map_btf_id ,
734+ .map_btf_id = & array_map_btf_ids [0 ],
737735 .iter_seq_info = & iter_seq_info ,
738736};
739737
@@ -1112,7 +1110,6 @@ static void prog_array_map_free(struct bpf_map *map)
11121110 * Thus, prog_array_map cannot be used as an inner_map
11131111 * and map_meta_equal is not implemented.
11141112 */
1115- static int prog_array_map_btf_id ;
11161113const struct bpf_map_ops prog_array_map_ops = {
11171114 .map_alloc_check = fd_array_map_alloc_check ,
11181115 .map_alloc = prog_array_map_alloc ,
@@ -1128,8 +1125,7 @@ const struct bpf_map_ops prog_array_map_ops = {
11281125 .map_fd_sys_lookup_elem = prog_fd_array_sys_lookup_elem ,
11291126 .map_release_uref = prog_array_map_clear ,
11301127 .map_seq_show_elem = prog_array_map_seq_show_elem ,
1131- .map_btf_name = "bpf_array" ,
1132- .map_btf_id = & prog_array_map_btf_id ,
1128+ .map_btf_id = & array_map_btf_ids [0 ],
11331129};
11341130
11351131static struct bpf_event_entry * bpf_event_entry_gen (struct file * perf_file ,
@@ -1218,7 +1214,6 @@ static void perf_event_fd_array_map_free(struct bpf_map *map)
12181214 fd_array_map_free (map );
12191215}
12201216
1221- static int perf_event_array_map_btf_id ;
12221217const struct bpf_map_ops perf_event_array_map_ops = {
12231218 .map_meta_equal = bpf_map_meta_equal ,
12241219 .map_alloc_check = fd_array_map_alloc_check ,
@@ -1231,8 +1226,7 @@ const struct bpf_map_ops perf_event_array_map_ops = {
12311226 .map_fd_put_ptr = perf_event_fd_array_put_ptr ,
12321227 .map_release = perf_event_fd_array_release ,
12331228 .map_check_btf = map_check_no_btf ,
1234- .map_btf_name = "bpf_array" ,
1235- .map_btf_id = & perf_event_array_map_btf_id ,
1229+ .map_btf_id = & array_map_btf_ids [0 ],
12361230};
12371231
12381232#ifdef CONFIG_CGROUPS
@@ -1255,7 +1249,6 @@ static void cgroup_fd_array_free(struct bpf_map *map)
12551249 fd_array_map_free (map );
12561250}
12571251
1258- static int cgroup_array_map_btf_id ;
12591252const struct bpf_map_ops cgroup_array_map_ops = {
12601253 .map_meta_equal = bpf_map_meta_equal ,
12611254 .map_alloc_check = fd_array_map_alloc_check ,
@@ -1267,8 +1260,7 @@ const struct bpf_map_ops cgroup_array_map_ops = {
12671260 .map_fd_get_ptr = cgroup_fd_array_get_ptr ,
12681261 .map_fd_put_ptr = cgroup_fd_array_put_ptr ,
12691262 .map_check_btf = map_check_no_btf ,
1270- .map_btf_name = "bpf_array" ,
1271- .map_btf_id = & cgroup_array_map_btf_id ,
1263+ .map_btf_id = & array_map_btf_ids [0 ],
12721264};
12731265#endif
12741266
@@ -1342,7 +1334,6 @@ static int array_of_map_gen_lookup(struct bpf_map *map,
13421334 return insn - insn_buf ;
13431335}
13441336
1345- static int array_of_maps_map_btf_id ;
13461337const struct bpf_map_ops array_of_maps_map_ops = {
13471338 .map_alloc_check = fd_array_map_alloc_check ,
13481339 .map_alloc = array_of_map_alloc ,
@@ -1355,6 +1346,5 @@ const struct bpf_map_ops array_of_maps_map_ops = {
13551346 .map_fd_sys_lookup_elem = bpf_map_fd_sys_lookup_elem ,
13561347 .map_gen_lookup = array_of_map_gen_lookup ,
13571348 .map_check_btf = map_check_no_btf ,
1358- .map_btf_name = "bpf_array" ,
1359- .map_btf_id = & array_of_maps_map_btf_id ,
1349+ .map_btf_id = & array_map_btf_ids [0 ],
13601350};
0 commit comments