DPDK 22.11.5
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
28/* SDK log type */
29#define RTE_LOGTYPE_EAL 0
30#define RTE_LOGTYPE_MALLOC 1
31#define RTE_LOGTYPE_RING 2
32#define RTE_LOGTYPE_MEMPOOL 3
33#define RTE_LOGTYPE_TIMER 4
34#define RTE_LOGTYPE_PMD 5
35#define RTE_LOGTYPE_HASH 6
36#define RTE_LOGTYPE_LPM 7
37#define RTE_LOGTYPE_KNI 8
38#define RTE_LOGTYPE_ACL 9
39#define RTE_LOGTYPE_POWER 10
40#define RTE_LOGTYPE_METER 11
41#define RTE_LOGTYPE_SCHED 12
42#define RTE_LOGTYPE_PORT 13
43#define RTE_LOGTYPE_TABLE 14
44#define RTE_LOGTYPE_PIPELINE 15
45#define RTE_LOGTYPE_MBUF 16
46#define RTE_LOGTYPE_CRYPTODEV 17
47#define RTE_LOGTYPE_EFD 18
48#define RTE_LOGTYPE_EVENTDEV 19
49#define RTE_LOGTYPE_GSO 20
51/* these log types can be used in an application */
52#define RTE_LOGTYPE_USER1 24
53#define RTE_LOGTYPE_USER2 25
54#define RTE_LOGTYPE_USER3 26
55#define RTE_LOGTYPE_USER4 27
56#define RTE_LOGTYPE_USER5 28
57#define RTE_LOGTYPE_USER6 29
58#define RTE_LOGTYPE_USER7 30
59#define RTE_LOGTYPE_USER8 31
62#define RTE_LOGTYPE_FIRST_EXT_ID 32
63
64/* Can't use 0, as it gives compiler warnings */
65#define RTE_LOG_EMERG 1U
66#define RTE_LOG_ALERT 2U
67#define RTE_LOG_CRIT 3U
68#define RTE_LOG_ERR 4U
69#define RTE_LOG_WARNING 5U
70#define RTE_LOG_NOTICE 6U
71#define RTE_LOG_INFO 7U
72#define RTE_LOG_DEBUG 8U
73#define RTE_LOG_MAX RTE_LOG_DEBUG
88int rte_openlog_stream(FILE *f);
89
98
108void rte_log_set_global_level(uint32_t level);
109
117
126int rte_log_get_level(uint32_t logtype);
127
138bool rte_log_can_log(uint32_t logtype, uint32_t loglevel);
139
150int rte_log_set_level_pattern(const char *pattern, uint32_t level);
151
162int rte_log_set_level_regexp(const char *regex, uint32_t level);
163
174int rte_log_set_level(uint32_t logtype, uint32_t level);
175
189
203
216int rte_log_register(const char *name);
217
234int rte_log_register_type_and_pick_level(const char *name, uint32_t level_def);
235
244void rte_log_list_types(FILE *out, const char *prefix);
245
254void rte_log_dump(FILE *f);
255
279int rte_log(uint32_t level, uint32_t logtype, const char *format, ...)
280#ifdef __GNUC__
281#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2))
283#endif
284#endif
286
313int rte_vlog(uint32_t level, uint32_t logtype, const char *format, va_list ap)
315
335#define RTE_LOG(l, t, ...) \
336 rte_log(RTE_LOG_ ## l, \
337 RTE_LOGTYPE_ ## t, # t ": " __VA_ARGS__)
338
359#define RTE_LOG_DP(l, t, ...) \
360 (void)((RTE_LOG_ ## l <= RTE_LOG_DP_LEVEL) ? \
361 rte_log(RTE_LOG_ ## l, \
362 RTE_LOGTYPE_ ## t, # t ": " __VA_ARGS__) : \
363 0)
364
365#define RTE_LOG_REGISTER_IMPL(type, name, level) \
366int type; \
367RTE_INIT(__##type) \
368{ \
369 type = rte_log_register_type_and_pick_level(name, RTE_LOG_##level); \
370 if (type < 0) \
371 type = RTE_LOGTYPE_EAL; \
372}
373
387#define RTE_LOG_REGISTER(type, name, level) \
388 RTE_LOG_REGISTER_IMPL(type, RTE_STR(name), level)
389
394#define RTE_LOG_REGISTER_DEFAULT(type, level) \
395 RTE_LOG_REGISTER_IMPL(type, RTE_STR(RTE_LOG_DEFAULT_LOGTYPE), level)
396
401#define RTE_LOG_REGISTER_SUFFIX(type, suffix, level) \
402 RTE_LOG_REGISTER_IMPL(type, \
403 RTE_STR(RTE_LOG_DEFAULT_LOGTYPE) "." RTE_STR(suffix), level)
404
405#ifdef __cplusplus
406}
407#endif
408
409#endif /* _RTE_LOG_H_ */
#define __rte_cold
Definition: rte_common.h:270
#define __rte_format_printf(format_index, first_arg)
Definition: rte_common.h:148
int rte_log_set_level_pattern(const char *pattern, uint32_t level)
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)
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)
bool rte_log_can_log(uint32_t logtype, uint32_t loglevel)
int rte_openlog_stream(FILE *f)