diff options
author | Zoltan Kiss <zoltan.kiss@linaro.org> | 2015-03-18 15:43:15 +0000 |
---|---|---|
committer | Zoltan Kiss <zoltan.kiss@linaro.org> | 2015-07-09 14:48:32 +0100 |
commit | cb9f8e66c8258ddd815eda15127d39ec067d5c7e (patch) | |
tree | 454468d66e0c537fe3db0c8edfc3b61faa186e01 | |
parent | fdf4e16180f7c35ee9b50b83aaf354451c6022eb (diff) |
netdev-odp: implemenet odp_override_log
ODP logs now end up in OVS logs.
Signed-off-by: Zoltan Kiss <zoltan.kiss@linaro.org>
-rw-r--r-- | lib/netdev-odp.c | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/lib/netdev-odp.c b/lib/netdev-odp.c index b6c135b4d..c78940484 100644 --- a/lib/netdev-odp.c +++ b/lib/netdev-odp.c @@ -95,12 +95,23 @@ free_odp_buf(struct ofpbuf *b) odp_packet_free(b->odp_pkt); } +static void odp_abort(void) +{ + VLOG_ERR("abort\n"); + abort(); +} + int odp_init() { int result; + odp_init_t params; - result = odp_init_global(NULL, NULL); + memset(¶ms, 0, sizeof(params)); + params.log_fn = &odp_override_log; + params.abort_fn = &odp_abort; + + result = odp_init_global(¶ms, NULL); if (result) { VLOG_ERR("Error: ODP global init failed\n"); return result; @@ -564,6 +575,32 @@ netdev_odp_rxq_recv(struct netdev_rxq *rxq_, struct dpif_packet **packets, return ret; } +int odp_override_log(odp_log_level_e level, const char *fmt, ...) +{ + va_list args; + enum vlog_level ovs_level; + + switch (level) { + case ODP_LOG_ERR: + case ODP_LOG_UNIMPLEMENTED: + case ODP_LOG_ABORT: + ovs_level = VLL_ERR; + break; + case ODP_LOG_PRINT: + ovs_level = VLL_INFO; + break; + case ODP_LOG_DBG: + default: + ovs_level = VLL_DBG; + } + + va_start(args, fmt); + vlog_rate_limit_valist(THIS_MODULE, ovs_level, &rl, fmt, args); + va_end(args); + + return 0; +} + static struct netdev_class netdev_odp_class = { "odp", odp_class_init, /* init */ |