mirror of
https://github.com/xdp-project/bpf-examples.git
synced 2024-05-06 15:54:53 +00:00
AF_XDP-interaction: info for using macro XSK_BTF_READ_INTO
The program segfaulted if using the XSK_BTF_READ_INTO macro with field as a C-string e.g. "rx_ktime". Add comments to highlight this happens. Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
This commit is contained in:
@@ -402,7 +402,7 @@ static void print_meta_info_time(uint8_t *pkt)
|
||||
int err;
|
||||
struct meta_info *m;
|
||||
|
||||
|
||||
/* Notice how rx_ktime_ptr becomes a pointer into struct memory */
|
||||
err = xsk_btf__read((void **)&rx_ktime_ptr, sizeof(*rx_ktime_ptr),
|
||||
"rx_ktime", xbi, pkt);
|
||||
if (err) {
|
||||
@@ -410,8 +410,7 @@ static void print_meta_info_time(uint8_t *pkt)
|
||||
return;
|
||||
}
|
||||
rx_ktime = *rx_ktime_ptr;
|
||||
|
||||
// XSK_BTF_READ_INTO(rx_ktime, "rx_ktime", xbi, pkt);
|
||||
/* Above same as XSK_BTF_READ_INTO(rx_ktime, rx_ktime, xbi, pkt); */
|
||||
|
||||
diff = time_now - rx_ktime;
|
||||
|
||||
|
@@ -21,6 +21,7 @@ LIBBPF_API int xsk_btf__read(void **dest, size_t size, const char *field, struct
|
||||
const void *addr);
|
||||
LIBBPF_API bool xsk_btf__has_field(const char *field, struct xsk_btf_info *xbi);
|
||||
|
||||
/* Notice: that field must NOT be a C-string as macro will stringify it */
|
||||
#define XSK_BTF_READ_INTO(dest, field, xbi, addr) ({ \
|
||||
typeof(dest) *_d; \
|
||||
xsk_btf__read((void **)&_d, sizeof(dest), #field, xbi, addr); \
|
||||
|
Reference in New Issue
Block a user