eal: change several log levels matching a regexp

Introduce a function to set the log level of several log types that
match a regular expression.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
This commit is contained in:
Olivier Matz 2017-04-04 18:40:35 +02:00 committed by Thomas Monjalon
parent 432050bfd0
commit a5279180f5
4 changed files with 35 additions and 0 deletions

View File

@ -189,5 +189,6 @@ DPDK_17.05 {
rte_log_dump;
rte_log_register;
rte_log_set_level;
rte_log_set_level_regexp;
} DPDK_17.02;

View File

@ -37,6 +37,7 @@
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <regex.h>
#include <rte_eal.h>
#include <rte_log.h>
@ -132,6 +133,26 @@ rte_log_set_level(uint32_t type, uint32_t level)
return 0;
}
/* set level */
int
rte_log_set_level_regexp(const char *pattern, uint32_t level)
{
regex_t r;
size_t i;
if (level > RTE_LOG_DEBUG)
return -1;
for (i = 0; i < rte_logs.dynamic_types_len; i++) {
if (rte_logs.dynamic_types[i].name == NULL)
continue;
if (regexec(&r, pattern, 0, NULL, 0) == 0)
rte_logs.dynamic_types[i].loglevel = level;
}
return 0;
}
/* get the current loglevel for the message beeing processed */
int rte_log_cur_msg_loglevel(void)
{

View File

@ -155,6 +155,18 @@ void rte_set_log_type(uint32_t type, int enable);
*/
uint32_t rte_get_log_type(void);
/**
* Set the log level for a given type.
*
* @param pattern
* The regexp identifying the log type.
* @param level
* The level to be set.
* @return
* 0 on success, a negative value if level is invalid.
*/
int rte_log_set_level_regexp(const char *pattern, uint32_t level);
/**
* Set the log level for a given type.
*

View File

@ -194,5 +194,6 @@ DPDK_17.05 {
rte_log_dump;
rte_log_register;
rte_log_set_level;
rte_log_set_level_regexp;
} DPDK_17.02;