发布网友 发布时间:2022-04-22 05:21
共1个回答
热心网友 时间:2024-02-15 09:53
必要的日志。
1.1 log级别
根据日志信息的优先级高低,dpdk将日志信息分为8个级别,其中RTE_LOG_DEBUG的值为8,这是日志的最高级别,也就是说记录的日志信息最多;相应的,RTE_LOG_EMERG为日志的最低级别,只记录严重的错误信息。dpdk在运行时只有一个log级别,代码中每一条日志都有其固定的log级别,只有代码的log级别小于等于当前系统的log级别时
,才有可能记录该条日志(还要参考log类型)。
log级别的相关宏在“./lib/librte_eal/common/include/rte_log.h”中定义:
91 /* Can't use 0, as it gives compiler warnings */
92 #define RTE_LOG_EMERG 1U /**< System is unusable. */
93 #define RTE_LOG_ALERT 2U /**< Action must be taken immediately. */
94 #define RTE_LOG_CRIT 3U /**< Critical conditions. */
95 #define RTE_LOG_ERR 4U /**< Error conditions. */
96 #define RTE_LOG_WARNING 5U /**< Warning conditions. */
97 #define RTE_LOG_NOTICE 6U /**< Normal but significant condition. */
98 #define RTE_LOG_INFO 7U /**< Informational. */
99 #define RTE_LOG_DEBUG 8U /**< Debug-level messages. */
1.2 log类型
与常见的log系统不同(如Linux的syslog),dpdk还根据日志所属的不同模块,将日志分为不同的log类型。每种log类型通过一个bit来表示,这与log级别不同,dpdk在运行时可以配置多个log类型(保存为bitmap)。代码中每一条日志都有其固定的log类型,当该log类型相应的bit置1时,才有可能记录该条日志(还要参考log级别)。
dpdk除了默认的log类型外,还留给用户8个可由用户自定义的log类型,用户可利用这8个自定义的log类型,将转发程序中的日志进行更详细的分类。
log类型的相关宏在“./liblibrte_eal/common/include/rte_log.h”中定义:
63 /* SDK log type */
#define RTE_LOGTYPE_EAL 0x00000001 /**< Log related to eal. */
65 #define RTE_LOGTYPE_MALLOC 0x00000002 /**< Log related to malloc. */
66 #define RTE_LOGTYPE_RING 0x00000004 /**< Log related to ring. */
67 #define RTE_LOGTYPE_MEMPOOL 0x00000008 /**< Log related to mempool. */
68 #define RTE_LOGTYPE_TIMER 0x00000010 /**< Log related to timers. */
69 #define RTE_LOGTYPE_PMD 0x00000020 /**< Log related to poll mode driver. */
70 #define RTE_LOGTYPE_HASH 0x00000040 /**< Log related to hash table. */
71 #define RTE_LOGTYPE_LPM 0x00000080 /**< Log related to LPM. */
72 #define RTE_LOGTYPE_KNI 0x00000100 /**< Log related to KNI. */
73 #define RTE_LOGTYPE_ACL 0x00000200 /**< Log related to ACL. */