DPDK 21.11.9
rte_log.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2010-2017 Intel Corporation
3 */
4
5#ifndef _RTE_LOG_H_
6#define _RTE_LOG_H_
7
16#ifdef __cplusplus
17extern "C" {
18#endif
19
20#include <stdint.h>
21#include <stdio.h>
22#include <stdarg.h>
23#include <stdbool.h>
24
25#include <rte_common.h>
26#include <rte_config.h>
27#include <rte_compat.h>
28
29/* SDK log type */
30#define RTE_LOGTYPE_EAL 0
31#define RTE_LOGTYPE_MALLOC 1
32#define RTE_LOGTYPE_RING 2
33#define RTE_LOGTYPE_MEMPOOL 3
34#define RTE_LOGTYPE_TIMER 4
35#define RTE_LOGTYPE_PMD 5
36#define RTE_LOGTYPE_HASH 6
37#define RTE_LOGTYPE_LPM 7
38#define RTE_LOGTYPE_KNI 8
39#define RTE_LOGTYPE_ACL 9
40#define RTE_LOGTYPE_POWER 10
41#define RTE_LOGTYPE_METER 11
42#define RTE_LOGTYPE_SCHED 12
43#define RTE_LOGTYPE_PORT 13
44#define RTE_LOGTYPE_TABLE 14
45#define RTE_LOGTYPE_PIPELINE 15
46#define RTE_LOGTYPE_MBUF 16
47#define RTE_LOGTYPE_CRYPTODEV 17
48#define RTE_LOGTYPE_EFD 18
49#define RTE_LOGTYPE_EVENTDEV 19
50#define RTE_LOGTYPE_GSO 20
52/* these log types can be used in an application */
53#define RTE_LOGTYPE_USER1 24
54#define RTE_LOGTYPE_USER2 25
55#define RTE_LOGTYPE_USER3 26
56#define RTE_LOGTYPE_USER4 27
57#define RTE_LOGTYPE_USER5 28
58#define RTE_LOGTYPE_USER6 29
59#define RTE_LOGTYPE_USER7 30
60#define RTE_LOGTYPE_USER8 31
63#define RTE_LOGTYPE_FIRST_EXT_ID 32
64
65/* Can't use 0, as it gives compiler warnings */
66#define RTE_LOG_EMERG 1U
67#define RTE_LOG_ALERT 2U
68#define RTE_LOG_CRIT 3U
69#define RTE_LOG_ERR 4U
70#define RTE_LOG_WARNING 5U
71#define RTE_LOG_NOTICE 6U
72#define RTE_LOG_INFO 7U
73#define RTE_LOG_DEBUG 8U
74#define RTE_LOG_MAX RTE_LOG_DEBUG
89int rte_openlog_stream(FILE *f);
90
99
109void rte_log_set_global_level(uint32_t level);
110
118
127int rte_log_get_level(uint32_t logtype);
128
139__rte_experimental
140bool rte_log_can_log(uint32_t logtype, uint32_t loglevel);
141
152int rte_log_set_level_pattern(const char *pattern, uint32_t level);
153
164int rte_log_set_level_regexp(const char *regex, uint32_t level);
165
176int rte_log_set_level(uint32_t logtype, uint32_t level);
177
191
205
218int rte_log_register(const char *name);
219
236int rte_log_register_type_and_pick_level(const char *name, uint32_t level_def);
237
249__rte_experimental
250void rte_log_list_types(FILE *out, const char *prefix);
251
260void rte_log_dump(FILE *f);
261
285int rte_log(uint32_t level, uint32_t logtype, const char *format, ...)
286#ifdef __GNUC__
287#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2))
289#endif
290#endif
292
319int rte_vlog(uint32_t level, uint32_t logtype, const char *format, va_list ap)
321
341#define RTE_LOG(l, t, ...) \
342 rte_log(RTE_LOG_ ## l, \
343 RTE_LOGTYPE_ ## t, # t ": " __VA_ARGS__)
344
365#define RTE_LOG_DP(l, t, ...) \
366 (void)((RTE_LOG_ ## l <= RTE_LOG_DP_LEVEL) ? \
367 rte_log(RTE_LOG_ ## l, \
368 RTE_LOGTYPE_ ## t, # t ": " __VA_ARGS__) : \
369 0)
370
371#define RTE_LOG_REGISTER_IMPL(type, name, level) \
372int type; \
373RTE_INIT(__##type) \
374{ \
375 type = rte_log_register_type_and_pick_level(name, RTE_LOG_##level); \
376 if (type < 0) \
377 type = RTE_LOGTYPE_EAL; \
378}
379
396#define RTE_LOG_REGISTER(type, name, level) \
397 RTE_LOG_REGISTER_IMPL(type, RTE_STR(name), level)
398
406#define RTE_LOG_REGISTER_DEFAULT(type, level) \
407 RTE_LOG_REGISTER_IMPL(type, RTE_STR(RTE_LOG_DEFAULT_LOGTYPE), level)
408
416#define RTE_LOG_REGISTER_SUFFIX(type, suffix, level) \
417 RTE_LOG_REGISTER_IMPL(type, \
418 RTE_STR(RTE_LOG_DEFAULT_LOGTYPE) "." RTE_STR(suffix), level)
419
420#ifdef __cplusplus
421}
422#endif
423
424#endif /* _RTE_LOG_H_ */
#define __rte_cold
Definition: rte_common.h:248
#define __rte_format_printf(format_index, first_arg)
Definition: rte_common.h:151
int rte_log_set_level_pattern(const char *pattern, uint32_t level)
__rte_experimental void rte_log_list_types(FILE *out, const char *prefix)
int rte_log_register_type_and_pick_level(const char *name, uint32_t level_def)
int rte_log_get_level(uint32_t logtype)
void rte_log_set_global_level(uint32_t level)
int rte_log_set_level(uint32_t logtype, uint32_t level)
__rte_experimental bool rte_log_can_log(uint32_t logtype, uint32_t loglevel)
uint32_t rte_log_get_global_level(void)
int rte_log_cur_msg_loglevel(void)
FILE * rte_log_get_stream(void)
int rte_log(uint32_t level, uint32_t logtype, const char *format,...) __rte_format_printf(3
int rte_log_cur_msg_logtype(void)
int rte_log_register(const char *name)
int int rte_vlog(uint32_t level, uint32_t logtype, const char *format, va_list ap) __rte_format_printf(3
void rte_log_dump(FILE *f)
int rte_log_set_level_regexp(const char *regex, uint32_t level)
int rte_openlog_stream(FILE *f)