DPDK 18 log日志系统使用

概述:

DPDK 日志系统分为1-8个等级,在lib/librte_eal/common/include/rte_log.h文件中定义,每个DPDK模块都可以定义一个预设日志输出等级,只有日志输出语句的等级小于等于预设输出等级才能被输出。

以下为dpdk对日志的分级:

/* Can't use 0, as it gives compiler warnings */
#define RTE_LOG_EMERG    1U  /**< System is unusable.               */
#define RTE_LOG_ALERT    2U  /**< Action must be taken immediately. */
#define RTE_LOG_CRIT     3U  /**< Critical conditions.              */
#define RTE_LOG_ERR      4U  /**< Error conditions.                 */
#define RTE_LOG_WARNING  5U  /**< Warning conditions.               */
#define RTE_LOG_NOTICE   6U  /**< Normal but significant condition. */
#define RTE_LOG_INFO     7U  /**< Informational.                    */
#define RTE_LOG_DEBUG    8U  /**< Debug-level messages.             */

Dpdk 使用int rte_log(uint32_t level, uint32_t logtype, const char *format, …); 函数打印日志,传入参数为:

  • 此条日志输出等级,

  • 日志type,

  • 输出log信息,

    但在dpdk中并不会直接使用rte_log,而是不同模块对它进行二次封装后使用

日志输出分析

例如在drivers/net/ixgbe/ixgbe_ethdev.c + 1038 ,此条log默认不会被输出,分析见后文

PMD_DRV_LOG(DEBUG, "SWFW phy%d lock released", hw->bus.func);

PMD_DRV_LOG的宏定义在ixgbe_log.h (通过ixgbe_ethdev.c对头文件的include可以看出,每个使用了LOG的地方,都会include一个xxx_log.h的文件),它的定义为:

extern int ixgbe_logtype_driver;
#define PMD_DRV_LOG_RAW(level, fmt, args...) \rte_log(RTE_LOG_ ## level, ixgbe_logtype_driver, "%s(): " fmt, \__func__, ## args)

传入的DEBUG被拼接为了RTE_LOG_DEBUG

对于宏中的ixgbe_logtype_driver 变量的定义和初始化:

//drivers/net/ixgbe/ixgbe_ethdev.c +8916 RTE_INIT(ixgbe_init_log){ixgbe_logtype_init = rte_log_register("pmd.net.ixgbe.init");if (ixgbe_logtype_init >= 0)rte_log_set_level(ixgbe_logtype_init, RTE_LOG_NOTICE);ixgbe_logtype_driver = rte_log_register("pmd.net.ixgbe.driver");if (ixgbe_logtype_driver >= 0)rte_log_set_level(ixgbe_logtype_driver, RTE_LOG_NOTICE);}
  1. 调用rte_log_register函数为ixgbe注册了名为”pmd.net.ixgbe.init”的日志type
    返回一个int作为此日志的type( ixgbe_logtype_driver是为了方便代码编写,”pmd.net.ixgbe.init”是为了方便用户,他们是一一映射的)。
  2. 随后使用rte_log_set_level设置了默认日志输出等级为RTE_LOG_NOTICE
    RTE_LOG_NOTICE<RTE_LOG_DEBUG,因此pmd.net.ixgbe.init日志 的DEBUG信息默认将不会输出。

log的使用

想要看到上文中ixgbe_logtype_driver 的debug级别日志需要在启动时传入–log-level参数,指定ixgbe_logtype_driver的debug开启。

以testpmd为例子:

./mips-loongson3a-linuxapp-gcc/app/testpmd --log-level=pmd.net.ixgbe.driver:8

则可以看见很多的debug信息被输出。这里的pmd.net.ixgbe.driver就是rte_log_register时传入的名字。
因此,想要看到对应的log,只需要展开二次封装的宏(如上文的PMD_DRV_LOG)找到此条log对应的type名字,在–log-level中传入设置即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265808.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

递归和迭代路由_静态路由在以太网接口中的不同书写会导致路由器怎样的操作结果?...

各位小伙伴们&#xff1a;大家好&#xff01;上一节和大家分享了在不同类型的网络中应该使用什么样的静态路由配置命令&#xff1b;今天我们再来看看在常见的多路访问(MBA)网络——以太网中&#xff0c;静态路由的不同书写方式将导致路由器执行那些不同的操作。如下图&#xff…

实验报告三

学 号 201521440010 中国人民公安大学 Chinese people’ public security university 网络对抗技术 实验报告 实验三 密码破解技术 学生姓名 邱景丛 年级 2015 区队 四 指导教师 高见 信息技术与网络安全学院 2016年11月7日 实验任务总纲 2016—2017 学年 第 一 …

设计前沿:25个设计师向您展示 iOS 7 界面

我们中的许多人都对新发布的 iOS 7 用户界面有点失望。扎眼的颜色搭配&#xff0c;难看的图标和可疑的设计决策&#xff0c;导致很多的设计师在 Dribbble 和 Behance 等社交网站分享自己对 iOS 界面设计的诠释。这篇文章集合了一些伟大的想法&#xff0c;改进苹果 iOS 7 的界面…

开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中...

目录 合作案例专栏&#xff1a;案例分享 开发专栏&#xff1a;项目实战 Qt开发专栏&#xff1a;开发技术 Qt开发专栏&#xff1a;三方库开发技术 Qt开发专栏&#xff1a;实用技巧 Qt开发专栏&#xff1a;各种问题解决 Qt开发专栏&#xff1a;qss样式表笔记大全 Qt开发专…

dpdk 18 ixgbe驱动初始化分析

rte_log_set_global_level rte_log_set_global_level(uint32_t level) pci bus注册 TE_REGISTER_BUS(pci, rte_pci_bus.bus); drivers/bus/pci/pci_common.c ,注册静态的设置rte_pci_bus&#xff0c;在rte_pci_bus中设置了pci bus的各个回调函数 struct rte_pci_bus rte_pc…

ATM + 购物商城程序

模拟实现一个ATM 购物商城程序 额度 15000或自定义 实现购物商城&#xff0c;买东西加入 购物车&#xff0c;调用信用卡接口结账 可以提现&#xff0c;手续费5% 每月22号出账单&#xff0c;每月10号为还款日&#xff0c;过期未还&#xff0c;按欠款总额 万分之5 每日计息 …

esp8266 擦拭_【一起玩esp8266】flash的擦除方法——专治疑难杂症

出现新问题。。。COM口没法操作 拒绝访问C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\Scripts>esptool.py --port COM6 erase_flashesptool.py v2.3.1Traceback (most recent call last):File "C:\Users\Administrator\AppData\Local\Programs\…

诗人李白小评

李白其实一生都不得志&#xff0c;他从小学文习武&#xff0c;少年时开始“行路&#xff0c;读万卷书&#xff0c;拜万家师”&#xff0c;希望走一条由人推荐&#xff0c;而一举成名的道路。可惜他忌恶如仇的性格&#xff0c;开罪了小人&#xff0c;导致小人对他仕途之路的极力…

智能家居 (11) ——树莓派摄像头捕捉人脸并识别

更多干货推荐可以去牛客网看看&#xff0c;他们现在的IT题库内容很丰富&#xff0c;属于国内做的很好的了&#xff0c;而且是课程刷题面经求职讨论区分享&#xff0c;一站式求职学习网站&#xff0c;最最最重要的里面的资源全部免费&#xff01;&#xff01;&#xff01;点击进…

centos上使用高版本gcc、g++

0x0 在centos7上gcc版本是4.85&#xff0c;在编译一些代码时需要使用g的一些新特性&#xff0c;而网上大多教程都是重新编译gcc&#xff0c;太麻烦了&#xff0c;在centos 7上默认是yum search不到高版本的gcc的 安装scl scl 是Software collections 的缩写&#xff0c;安装…

【Docker系列教程之一】docker入门

我们在理解 docker 之前&#xff0c;首先我们得先区分清楚两个概念&#xff0c;容器和虚拟机。 我们用的传统虚拟机如 VMware &#xff0c; VisualBox 之类的需要模拟整台机器包括硬件&#xff0c;每台虚拟机都需要有自己的操作系统&#xff0c;虚拟机一旦被开启&#xff0c;预…

jmeter聚个报告怎么看qps_【jmeter】jmeter测试网站QPS

上一节中&#xff0c;我们了解了jmeter的一此主要元件&#xff0c;那么这些元件如何使用到性能测试中呢。这一节创建一个简单的测试计划来使用这些元件。该计划对应的测试需求。1)测试目标网站是fnng.cnblogs.com2)测试目的是该网站在负载达到20 QPS 时的响应时间。QPS 解释QPS…

mysql升级5.5

对付Linux的问题&#xff0c;其实很多都是权限问题&#xff0c;细心想一下即可。 centos6.4默认装的是mysql5.1&#xff0c;使用 yum update 也update不了。google了一下&#xff0c;找到个yum安装的方法&#xff1a;http://www.webtatic.com/packages/mysql55/ 先备份一下&…

Java基础 —— 变量,选择,循环,数组,输入与输出等

目录嵌入式学JAVAJava安卓开发环境搭建并运行HelloWorld概念引入JavaSE,EE,ME的区别JREJDK编程实操&#xff1a;从C面向过程转变变量定义与输出数组的定义与遍历(循环、控制、选择和C完全一样)函数的调用&#xff1a;类比c语言结构体的使用输入数据&#xff1a;Scanner嵌入式学…

ubuntu20 编译dpdk错误 -Werror=address-of-packed-member

0x0 在ubuntu20上编译dpdk 18.11报错&#xff0c;gcc 版本为9.3.0&#xff0c;报错如下&#xff1a; error: converting a packed ‘const struct ether_addr’ pointer (alignment 1) to a ‘unaligned_uint16_t’ {aka ‘const short unsigned int’} pointer (alignment 2…

linux 火狐无法执行二进制文件_尝试在Linux上运行Shell脚本时“无法执行二进制文件”...

我对linux和shell编写非常陌生。我正在尝试使用以下命令从linux上的安全shell(ssh)运行shellscript&#xff1a;chmod x path/to/mynewshell.shsh path/to/mynewshell.sh我收到此错误&#xff1a;path/to/mynewshell.sh: path/to/mynewshell.sh: cannot execute binary file.尝…

Java 特性

Java有四大特性&#xff1a; 1.封装&#xff1a;隐藏对象的属性和实现细节&#xff0c;仅仅对外公开接口。 封装具有一下优点&#xff1a; 便于使用者正确、方便的使用系统&#xff0c;防止使用者错误修改系统属性&#xff1b;有助于建立各个系统之间的松耦合关系&#xff1b;…

MyBatis 传递多个参数

2019独角兽企业重金招聘Python工程师标准>>> 在MyBatis中可以用以下的方式来传递多个参数 1. 用java.util.Map来传递, Code 如下: public List<User> getAllUsersByUserName(String username, int start, int limit){Map<String,Object> params new H…

Linux stmac网卡代码分析----probe

probe 主要分析一下驱动的主要框架&#xff0c;必要地方细致分析下 文件位置&#xff1a; drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c 从文件的最后看起&#xff1a; module_pci_driver(stmmac_pci_driver); stmmac_pci_driver结构体如下&#xff0c;里面包含了id_…

Java面向对象(1) —— 封装

目录一、封装的概念二、类的封装以及使用三、访问修饰符四、属性封装的实现五、方法封装的实现六、UML类图七、类的构造方法与可重载八、this关键字九、static关键字十、方法重载&#xff1a;overload十一、包&#xff1a;package一、封装的概念 将字段&#xff08;C结构体中的…