How to load BTF style maps?

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

 



I have maps written in the old style like this:

struct bpf_map_def SEC("maps") xdp_stats_map = {
.type        = BPF_MAP_TYPE_ARRAY,
.key_size    = sizeof(__u32),
.value_size  = sizeof(struct datarec),
.max_entries = XDP_ACTION_MAX,
};

I changed it to the new BTF style like this but now the example BPF
loader from the kernel doesn't work anymore.

struct {
    __uint(type, BPF_MAP_TYPE_ARRAY);
    __uint(max_entries,  XDP_ACTION_MAX);
    __type(key,  __u32);
    __type(value,  struct datarec);
}  xdp_stats_map SEC(".maps");

I used this to load my program
https://github.com/torvalds/linux/blob/master/samples/bpf/bpf_load.c

But now it fails to load. First thing I noticed was the I had to
change "maps" to ".maps"
https://github.com/torvalds/linux/blob/master/samples/bpf/bpf_load.c#L563

But then bpf_create_map_node fails because all the arguments are 0. I
dumped the buffer here
https://github.com/torvalds/linux/blob/master/samples/bpf/bpf_load.c#L489
and it just copies 28 bytes of zeroes for each map I have.

How do you load BTF style maps? bpf_load.c doesn't seem to work on them.



[Index of Archives]     [Linux Networking Development]     [Fedora Linux Users]     [Linux SCTP]     [DCCP]     [Gimp]     [Yosemite Campsites]

  Powered by Linux