DPDK  2.1.0
Data Structures | Macros | Functions | Variables
rte_log.h File Reference
#include <stdint.h>
#include <stdio.h>
#include <stdarg.h>

Go to the source code of this file.

Data Structures

struct  rte_logs

Macros

#define RTE_LOGTYPE_EAL   0x00000001
#define RTE_LOGTYPE_MALLOC   0x00000002
#define RTE_LOGTYPE_RING   0x00000004
#define RTE_LOGTYPE_MEMPOOL   0x00000008
#define RTE_LOGTYPE_TIMER   0x00000010
#define RTE_LOGTYPE_PMD   0x00000020
#define RTE_LOGTYPE_HASH   0x00000040
#define RTE_LOGTYPE_LPM   0x00000080
#define RTE_LOGTYPE_KNI   0x00000100
#define RTE_LOGTYPE_ACL   0x00000200
#define RTE_LOGTYPE_POWER   0x00000400
#define RTE_LOGTYPE_METER   0x00000800
#define RTE_LOGTYPE_SCHED   0x00001000
#define RTE_LOGTYPE_PORT   0x00002000
#define RTE_LOGTYPE_TABLE   0x00004000
#define RTE_LOGTYPE_PIPELINE   0x00008000
#define RTE_LOGTYPE_MBUF   0x00010000
#define RTE_LOGTYPE_USER1   0x01000000
#define RTE_LOGTYPE_USER2   0x02000000
#define RTE_LOGTYPE_USER3   0x04000000
#define RTE_LOGTYPE_USER4   0x08000000
#define RTE_LOGTYPE_USER5   0x10000000
#define RTE_LOGTYPE_USER6   0x20000000
#define RTE_LOGTYPE_USER7   0x40000000
#define RTE_LOGTYPE_USER8   0x80000000
#define RTE_LOG_EMERG   1U
#define RTE_LOG_ALERT   2U
#define RTE_LOG_CRIT   3U
#define RTE_LOG_ERR   4U
#define RTE_LOG_WARNING   5U
#define RTE_LOG_NOTICE   6U
#define RTE_LOG_INFO   7U
#define RTE_LOG_DEBUG   8U
#define RTE_LOG(l, t,...)

Functions

int rte_openlog_stream (FILE *f)
void rte_set_log_level (uint32_t level)
uint32_t rte_get_log_level (void)
void rte_set_log_type (uint32_t type, int enable)
uint32_t rte_get_log_type (void)
int rte_log_cur_msg_loglevel (void)
int rte_log_cur_msg_logtype (void)
void rte_log_set_history (int enable)
void rte_log_dump_history (FILE *f)
int rte_log_add_in_history (const char *buf, size_t size)
int rte_log (uint32_t level, uint32_t logtype, const char *format,...)
int rte_vlog (uint32_t level, uint32_t logtype, const char *format, va_list ap)

Variables

struct rte_logs rte_logs
FILE * eal_default_log_stream

Detailed Description

RTE Logs API

This file provides a log API to RTE applications.

Definition in file rte_log.h.

Macro Definition Documentation

#define RTE_LOGTYPE_EAL   0x00000001

Log related to eal.

Definition at line 64 of file rte_log.h.

#define RTE_LOGTYPE_MALLOC   0x00000002

Log related to malloc.

Definition at line 65 of file rte_log.h.

#define RTE_LOGTYPE_RING   0x00000004

Log related to ring.

Definition at line 66 of file rte_log.h.

#define RTE_LOGTYPE_MEMPOOL   0x00000008

Log related to mempool.

Definition at line 67 of file rte_log.h.

#define RTE_LOGTYPE_TIMER   0x00000010

Log related to timers.

Definition at line 68 of file rte_log.h.

#define RTE_LOGTYPE_PMD   0x00000020

Log related to poll mode driver.

Definition at line 69 of file rte_log.h.

#define RTE_LOGTYPE_HASH   0x00000040

Log related to hash table.

Definition at line 70 of file rte_log.h.

#define RTE_LOGTYPE_LPM   0x00000080

Log related to LPM.

Definition at line 71 of file rte_log.h.

#define RTE_LOGTYPE_KNI   0x00000100

Log related to KNI.

Definition at line 72 of file rte_log.h.

#define RTE_LOGTYPE_ACL   0x00000200

Log related to ACL.

Definition at line 73 of file rte_log.h.

#define RTE_LOGTYPE_POWER   0x00000400

Log related to power.

Definition at line 74 of file rte_log.h.

#define RTE_LOGTYPE_METER   0x00000800

Log related to QoS meter.

Definition at line 75 of file rte_log.h.

#define RTE_LOGTYPE_SCHED   0x00001000

Log related to QoS port scheduler.

Definition at line 76 of file rte_log.h.

#define RTE_LOGTYPE_PORT   0x00002000

Log related to port.

Definition at line 77 of file rte_log.h.

#define RTE_LOGTYPE_TABLE   0x00004000

Log related to table.

Definition at line 78 of file rte_log.h.

#define RTE_LOGTYPE_PIPELINE   0x00008000

Log related to pipeline.

Definition at line 79 of file rte_log.h.

#define RTE_LOGTYPE_MBUF   0x00010000

Log related to mbuf.

Definition at line 80 of file rte_log.h.

#define RTE_LOGTYPE_USER1   0x01000000

User-defined log type 1.

Definition at line 83 of file rte_log.h.

#define RTE_LOGTYPE_USER2   0x02000000

User-defined log type 2.

Definition at line 84 of file rte_log.h.

#define RTE_LOGTYPE_USER3   0x04000000

User-defined log type 3.

Definition at line 85 of file rte_log.h.

#define RTE_LOGTYPE_USER4   0x08000000

User-defined log type 4.

Definition at line 86 of file rte_log.h.

#define RTE_LOGTYPE_USER5   0x10000000

User-defined log type 5.

Definition at line 87 of file rte_log.h.

#define RTE_LOGTYPE_USER6   0x20000000

User-defined log type 6.

Definition at line 88 of file rte_log.h.

#define RTE_LOGTYPE_USER7   0x40000000

User-defined log type 7.

Definition at line 89 of file rte_log.h.

#define RTE_LOGTYPE_USER8   0x80000000

User-defined log type 8.

Definition at line 90 of file rte_log.h.

#define RTE_LOG_EMERG   1U

System is unusable.

Definition at line 93 of file rte_log.h.

#define RTE_LOG_ALERT   2U

Action must be taken immediately.

Definition at line 94 of file rte_log.h.

#define RTE_LOG_CRIT   3U

Critical conditions.

Definition at line 95 of file rte_log.h.

#define RTE_LOG_ERR   4U

Error conditions.

Definition at line 96 of file rte_log.h.

#define RTE_LOG_WARNING   5U

Warning conditions.

Definition at line 97 of file rte_log.h.

#define RTE_LOG_NOTICE   6U

Normal but significant condition.

Definition at line 98 of file rte_log.h.

#define RTE_LOG_INFO   7U

Informational.

Definition at line 99 of file rte_log.h.

#define RTE_LOG_DEBUG   8U

Debug-level messages.

Definition at line 100 of file rte_log.h.

#define RTE_LOG (   l,
  t,
  ... 
)
Value:
(void)((RTE_LOG_ ## l <= RTE_LOG_LEVEL) ? \
rte_log(RTE_LOG_ ## l, \
RTE_LOGTYPE_ ## t, # t ": " __VA_ARGS__) : \
0)

Generates a log message.

The RTE_LOG() is equivalent to rte_log() with two differences:

  • RTE_LOG() can be used to remove debug logs at compilation time, depending on RTE_LOG_LEVEL configuration option, and compilation optimization level. If optimization is enabled, the tests involving constants only are pre-computed. If compilation is done with -O0, these tests will be done at run time.
  • The log level and log type names are smaller, for example: RTE_LOG(INFO, EAL, "this is a %s", "log");
Parameters
lLog level. A value between EMERG (1) and DEBUG (8). The short name is expanded by the macro, so it cannot be an integer value.
tThe log type, for example, EAL. The short name is expanded by the macro, so it cannot be an integer value.
...The fmt string, as in printf(3), followed by the variable arguments required by the format.
Returns
  • 0: Success.
  • Negative on error.

Definition at line 300 of file rte_log.h.

Function Documentation

int rte_openlog_stream ( FILE *  f)

Change the stream that will be used by the logging system.

This can be done at any time. The f argument represents the stream to be used to send the logs. If f is NULL, the default output is used (stderr).

Parameters
fPointer to the stream.
Returns
  • 0 on success.
  • Negative on error.
void rte_set_log_level ( uint32_t  level)

Set the global log level.

After this call, all logs that are lower or equal than level and lower or equal than the RTE_LOG_LEVEL configuration option will be displayed.

Parameters
levelLog level. A value between RTE_LOG_EMERG (1) and RTE_LOG_DEBUG (8).
uint32_t rte_get_log_level ( void  )

Get the global log level.

void rte_set_log_type ( uint32_t  type,
int  enable 
)

Enable or disable the log type.

Parameters
typeLog type, for example, RTE_LOGTYPE_EAL.
enableTrue for enable; false for disable.
uint32_t rte_get_log_type ( void  )

Get the global log type.

int rte_log_cur_msg_loglevel ( void  )

Get the current loglevel for the message being processed.

Before calling the user-defined stream for logging, the log subsystem sets a per-lcore variable containing the loglevel and the logtype of the message being processed. This information can be accessed by the user-defined log output function through this function.

Returns
The loglevel of the message being processed.
int rte_log_cur_msg_logtype ( void  )

Get the current logtype for the message being processed.

Before calling the user-defined stream for logging, the log subsystem sets a per-lcore variable containing the loglevel and the logtype of the message being processed. This information can be accessed by the user-defined log output function through this function.

Returns
The logtype of the message being processed.
void rte_log_set_history ( int  enable)

Enable or disable the history (enabled by default)

Parameters
enabletrue to enable, or 0 to disable history.
void rte_log_dump_history ( FILE *  f)

Dump the log history to a file

Parameters
fA pointer to a file for output
int rte_log_add_in_history ( const char *  buf,
size_t  size 
)

Add a log message to the history.

This function can be called from a user-defined log stream. It adds the given message in the history that can be dumped using rte_log_dump_history().

Parameters
bufA data buffer containing the message to be saved in the history.
sizeThe length of the data buffer.
Returns
  • 0: Success.
  • (-ENOBUFS) if there is no room to store the message.
int rte_log ( uint32_t  level,
uint32_t  logtype,
const char *  format,
  ... 
)

Generates a log message.

The message will be sent in the stream defined by the previous call to rte_openlog_stream().

The level argument determines if the log should be displayed or not, depending on the global rte_logs variable.

The preferred alternative is the RTE_LOG() function because debug logs may be removed at compilation time if optimization is enabled. Moreover, logs are automatically prefixed by type when using the macro.

Parameters
levelLog level. A value between RTE_LOG_EMERG (1) and RTE_LOG_DEBUG (8).
logtypeThe log type, for example, RTE_LOGTYPE_EAL.
formatThe format string, as in printf(3), followed by the variable arguments required by the format.
Returns
  • 0: Success.
  • Negative on error.
int rte_vlog ( uint32_t  level,
uint32_t  logtype,
const char *  format,
va_list  ap 
)

Generates a log message.

The message will be sent in the stream defined by the previous call to rte_openlog_stream().

The level argument determines if the log should be displayed or not, depending on the global rte_logs variable. A trailing newline may be added if needed.

The preferred alternative is the RTE_LOG() because debug logs may be removed at compilation time.

Parameters
levelLog level. A value between RTE_LOG_EMERG (1) and RTE_LOG_DEBUG (8).
logtypeThe log type, for example, RTE_LOGTYPE_EAL.
formatThe format string, as in printf(3), followed by the variable arguments required by the format.
apThe va_list of the variable arguments required by the format.
Returns
  • 0: Success.
  • Negative on error.

Variable Documentation

Global log informations

FILE* eal_default_log_stream

The default log stream.