在dpdk中快速查看驱动初始化日志

        之所以能做到快速查看,是因为 dpdk 的日志模块提供了便利的使用方式。面向 dpdk 的开发者,提供了日志打印的注册功能,面向普通用户,提供了修改日志打印等级的功能。
        以 ixgbe 为例,该驱动的开发者通过多次调用 RTE_LOG_REGISTER() 宏注册了若干个日志打印等级(不太好描述,暂且这样称呼),如下所示:

RTE_LOG_REGISTER(ixgbe_logtype_init, pmd.net.ixgbe.init, NOTICE);
RTE_LOG_REGISTER(ixgbe_logtype_driver, pmd.net.ixgbe.driver, NOTICE);

#ifdef RTE_LIBRTE_IXGBE_DEBUG_RX
RTE_LOG_REGISTER(ixgbe_logtype_rx, pmd.net.ixgbe.rx, DEBUG);
#endif
#ifdef RTE_LIBRTE_IXGBE_DEBUG_TX
RTE_LOG_REGISTER(ixgbe_logtype_tx, pmd.net.ixgbe.tx, DEBUG);
#endif
#ifdef RTE_LIBRTE_IXGBE_DEBUG_TX_FREE
RTE_LOG_REGISTER(ixgbe_logtype_tx_free, pmd.net.ixgbe.tx_free, DEBUG);
#endif 

        从变量的命名可以猜到,之所以有多个日志等级,是因为他们分别对应不同的业务处理阶段,比如 pmd.net.ixgbe.init 主要用来控制 ixgbe 驱动中与初始化相关的日志打印等级。

        日志打印通过调用 PMD_INIT_LOG() 宏来实现。从上面的代码可以看到,pmd.net.ixgbe.init 的日志打印等级是 NOTICE,因此,调用 PMD_INIT_LOG() 时,如果传入的日志打印等级低于 NOTICE,则该调用产生的日志信息将不会被打印。

        此时,用户可以通过在 EAL 命令行参数中添加 "--log-level=pmd.net.ixgbe.init:8" 来实现对 pmd.net.ixgbe.init 日志等级的修改,其中 8 表示将日志等级设置为 DEBUG,优先级大于等于 DEBUG 的日志都会被打印。

        这样修改后,ixgbe 驱动中 PMD_INIT_LOG() 调用产生的日志都可以被打印出来了。其他的日志等级也可以参照此方法进行修改,是不是很方便!


        使用 “--log-level=help” 可以查看当前 DPDK 支持哪些日志类别,如下所示:

$ ./build/app/dpdk-testpmd -l 0-3 --log-level=help
Log type is a pattern matching items of this list (plugins may be missing):
	bus.auxiliary
	bus.dpaa
	bus.fslmc
	bus.ifpga
	bus.vdev
	bus.vmbus
	lib.acl
	lib.bbdev
	lib.bpf
	lib.cfgfile
    ...

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值