mirror of
https://github.com/xdp-project/bpf-examples.git
synced 2024-05-06 15:54:53 +00:00
AF_XDP-interaction: Code cleanup, remove local BTF code
The local BTF code in af_xdp_user.c was only used for debugging the BTF structures while developing and testing the lib_xsk_extend.c code. If is confusing for other reading the code, so simply remove thisi, as the lib_xsk_extend.c should hide these details fpr API users. Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
This commit is contained in:
@@ -418,8 +418,9 @@ static int print_meta_info_time(uint8_t *pkt)
|
|||||||
time_now = gettime();
|
time_now = gettime();
|
||||||
diff = time_now - rx_ktime;
|
diff = time_now - rx_ktime;
|
||||||
|
|
||||||
printf("meta-time rx_ktime:%llu time_now:%llu diff:%llu ns\n",
|
if (debug_meta)
|
||||||
rx_ktime, time_now, diff);
|
printf("meta-time rx_ktime:%llu time_now:%llu diff:%llu ns\n",
|
||||||
|
rx_ktime, time_now, diff);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -445,8 +446,9 @@ static int print_meta_info_time_faster(uint8_t *pkt)
|
|||||||
time_now = gettime();
|
time_now = gettime();
|
||||||
diff = time_now - rx_ktime;
|
diff = time_now - rx_ktime;
|
||||||
|
|
||||||
printf("meta-time rx_ktime:%llu time_now:%llu diff:%llu ns\n",
|
if (debug_meta)
|
||||||
rx_ktime, time_now, diff);
|
printf("meta-time rx_ktime:%llu time_now:%llu diff:%llu ns\n",
|
||||||
|
rx_ktime, time_now, diff);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -730,83 +732,6 @@ static void exit_application(int signal)
|
|||||||
global_exit = true;
|
global_exit = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int btf_walk_struct_members(struct btf *btf_obj, __s32 btf_id)
|
|
||||||
{
|
|
||||||
const struct btf_member *m;
|
|
||||||
const struct btf_type *btype;
|
|
||||||
unsigned short vlen;
|
|
||||||
__u32 kind;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
btype = btf__type_by_id(btf_obj, btf_id);
|
|
||||||
|
|
||||||
kind = btf_kind(btype);
|
|
||||||
if (kind != BTF_KIND_STRUCT) {
|
|
||||||
fprintf(stderr, "ERROR: %s() BTF must be BTF_KIND_STRUCT",
|
|
||||||
__func__);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
/* BTF_KIND_STRUCT and BTF_KIND_UNION are followed
|
|
||||||
* by multiple "struct btf_member". The exact number
|
|
||||||
* of btf_member is stored in the vlen (of the info in
|
|
||||||
* "struct btf_type").
|
|
||||||
*/
|
|
||||||
m = btf_members(btype);
|
|
||||||
vlen = BTF_INFO_VLEN(btype->info);
|
|
||||||
|
|
||||||
printf("XXX kind:%d members:%d\n", kind, vlen);
|
|
||||||
|
|
||||||
for (i = 0; i < vlen; i++, m++) {
|
|
||||||
__s64 sz = btf__resolve_size(btf_obj, m->type);
|
|
||||||
|
|
||||||
printf("XXX [%d] member type:%d bit-offset:%u name_off:%u sz:%lld\n",
|
|
||||||
i, m->type, m->offset, m->name_off, sz);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
__s32 btf_find_struct(struct btf *btf, const char *name, __s64 *size)
|
|
||||||
{
|
|
||||||
__s32 btf_id = btf__find_by_name_kind(btf, name, BTF_KIND_STRUCT);
|
|
||||||
__s64 sz = btf__resolve_size(btf, btf_id);
|
|
||||||
|
|
||||||
if (debug_meta)
|
|
||||||
printf("XXX bpf_id:%d struct name:%s size:%lld\n",
|
|
||||||
btf_id, name, sz);
|
|
||||||
*size = sz;
|
|
||||||
btf_walk_struct_members(btf, btf_id);
|
|
||||||
|
|
||||||
return btf_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
int btf_info_via_bpf_object(struct bpf_object *bpf_obj)
|
|
||||||
{
|
|
||||||
struct btf *btf = bpf_object__btf(bpf_obj);
|
|
||||||
__s64 size;
|
|
||||||
int err;
|
|
||||||
|
|
||||||
struct xsk_btf_info *xdp_hint_rx_time = NULL;
|
|
||||||
|
|
||||||
static const char *name1 = "xdp_hints_mark";
|
|
||||||
static const char *name2 = "xdp_hints_rx_time";
|
|
||||||
|
|
||||||
btf_find_struct(btf, name1, &size);
|
|
||||||
btf_find_struct(btf, name2, &size);
|
|
||||||
|
|
||||||
err = xsk_btf__init_xdp_hint(btf, name2, &xdp_hint_rx_time);
|
|
||||||
if (err) {
|
|
||||||
fprintf(stderr, "WARN(%d): Cannot xsk_btf__init_xdp_hint\n", err);
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
if (!xsk_btf__has_field("rx_ktime", xdp_hint_rx_time)) {
|
|
||||||
fprintf(stderr, "WARN: %s doesn't contain member rx_ktime\n",
|
|
||||||
name2);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int ret, err;
|
int ret, err;
|
||||||
@@ -865,9 +790,6 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (debug_meta) {
|
|
||||||
btf_info_via_bpf_object(bpf_obj);
|
|
||||||
}
|
|
||||||
err = init_btf_info_via_bpf_object(bpf_obj);
|
err = init_btf_info_via_bpf_object(bpf_obj);
|
||||||
if (err) {
|
if (err) {
|
||||||
fprintf(stderr, "ERROR(%d): Invalid BTF info: errno:%s\n",
|
fprintf(stderr, "ERROR(%d): Invalid BTF info: errno:%s\n",
|
||||||
|
Reference in New Issue
Block a user