dpdk: fix format rx/tx burst function name failed
Type: fix Signed-off-by: Xiaoming Jiang <jiangxiaoming@outlook.com> Change-Id: I9971e69135e0652a36e4b4754774a43ea1d92e8b
This commit is contained in:

committed by
Damjan Marion

parent
e10c524206
commit
5b55526da4
@ -17,9 +17,6 @@
|
||||
#include <vppinfra/format.h>
|
||||
#include <assert.h>
|
||||
|
||||
#define __USE_GNU
|
||||
#include <dlfcn.h>
|
||||
|
||||
#include <vnet/ethernet/ethernet.h>
|
||||
#include <vnet/ethernet/sfp.h>
|
||||
#include <dpdk/device/dpdk.h>
|
||||
@ -347,7 +344,7 @@ format_dpdk_burst_fn (u8 *s, va_list *args)
|
||||
dpdk_device_t *xd = va_arg (*args, dpdk_device_t *);
|
||||
vlib_rx_or_tx_t dir = va_arg (*args, vlib_rx_or_tx_t);
|
||||
void *p;
|
||||
Dl_info info = { 0 };
|
||||
clib_elf_symbol_t sym;
|
||||
|
||||
#if RTE_VERSION < RTE_VERSION_NUM(21, 11, 0, 0)
|
||||
#define rte_eth_fp_ops rte_eth_devices
|
||||
@ -356,10 +353,14 @@ format_dpdk_burst_fn (u8 *s, va_list *args)
|
||||
p = (dir == VLIB_TX) ? rte_eth_fp_ops[xd->port_id].tx_pkt_burst :
|
||||
rte_eth_fp_ops[xd->port_id].rx_pkt_burst;
|
||||
|
||||
if (dladdr (p, &info) == 0 || info.dli_sname == 0)
|
||||
return format (s, "(not available)");
|
||||
|
||||
return format (s, "%s", info.dli_sname);
|
||||
if (clib_elf_symbol_by_address (pointer_to_uword (p), &sym))
|
||||
{
|
||||
return format (s, "%s", clib_elf_symbol_name (&sym));
|
||||
}
|
||||
else
|
||||
{
|
||||
return format (s, "(not available)");
|
||||
}
|
||||
}
|
||||
|
||||
static u8 *
|
||||
|
@ -319,20 +319,33 @@ symbol_by_address_or_name (char *by_name,
|
||||
return 0;
|
||||
}
|
||||
|
||||
uword
|
||||
clib_elf_symbol_by_name (char *by_name, clib_elf_symbol_t * s)
|
||||
__clib_export uword
|
||||
clib_elf_symbol_by_name (char *by_name, clib_elf_symbol_t *s)
|
||||
{
|
||||
return symbol_by_address_or_name (by_name, /* by_address */ 0, s);
|
||||
}
|
||||
|
||||
uword
|
||||
clib_elf_symbol_by_address (uword by_address, clib_elf_symbol_t * s)
|
||||
__clib_export uword
|
||||
clib_elf_symbol_by_address (uword by_address, clib_elf_symbol_t *s)
|
||||
{
|
||||
return symbol_by_address_or_name ( /* by_name */ 0, by_address, s);
|
||||
}
|
||||
|
||||
u8 *
|
||||
format_clib_elf_symbol (u8 * s, va_list * args)
|
||||
__clib_export const char *
|
||||
clib_elf_symbol_name (clib_elf_symbol_t *s)
|
||||
{
|
||||
clib_elf_main_t *cem = &clib_elf_main;
|
||||
elf_main_t *em;
|
||||
elf_symbol_table_t *t;
|
||||
|
||||
em = vec_elt_at_index (cem->elf_mains, s->elf_main_index);
|
||||
t = vec_elt_at_index (em->symbol_tables, s->symbol_table_index);
|
||||
|
||||
return (const char *) elf_symbol_name (t, &s->symbol);
|
||||
}
|
||||
|
||||
__clib_export u8 *
|
||||
format_clib_elf_symbol (u8 *s, va_list *args)
|
||||
{
|
||||
clib_elf_main_t *cem = &clib_elf_main;
|
||||
clib_elf_symbol_t *sym = va_arg (*args, clib_elf_symbol_t *);
|
||||
|
@ -131,6 +131,8 @@ typedef struct
|
||||
uword clib_elf_symbol_by_name (char *name, clib_elf_symbol_t * result);
|
||||
uword clib_elf_symbol_by_address (uword address, clib_elf_symbol_t * result);
|
||||
|
||||
const char *clib_elf_symbol_name (clib_elf_symbol_t *result);
|
||||
|
||||
format_function_t format_clib_elf_symbol, format_clib_elf_symbol_with_address;
|
||||
|
||||
#endif /* included_clib_elf_self_h */
|
||||
|
Reference in New Issue
Block a user