#include <stdint.h>
#include <stdio.h>
#include <stdarg.h>
+#include <stdbool.h>
#include <sys/queue.h>
#include <rte_common.h>
#include <rte_config.h>
+#include <rte_compat.h>
struct rte_log_dynamic_type;
struct rte_log_dynamic_type *dynamic_types;
};
-/** Global log informations */
+/** Global log information */
extern struct rte_logs rte_logs;
/* SDK log type */
*/
int rte_openlog_stream(FILE *f);
+/**
+ * @warning
+ * @b EXPERIMENTAL: this API may change without prior notice
+ *
+ * Retrieve the stream used by the logging system (see rte_openlog_stream()
+ * to change it).
+ *
+ * @return
+ * Pointer to the stream.
+ */
+__rte_experimental
+FILE *rte_log_get_stream(void);
+
/**
* Set the global log level.
*
*/
int rte_log_get_level(uint32_t logtype);
+/**
+ * For a given `logtype`, check if a log with `loglevel` can be printed.
+ *
+ * @param logtype
+ * The log type identifier
+ * @param loglevel
+ * Log level. A value between RTE_LOG_EMERG (1) and RTE_LOG_DEBUG (8).
+ * @return
+ * Returns 'true' if log can be printed and 'false' if it can't.
+ */
+__rte_experimental
+bool rte_log_can_log(uint32_t logtype, uint32_t loglevel);
+
/**
* Set the log level for a given type based on shell pattern.
*
* - >=0: the newly registered log type
* - <0: rte_log_register() error value
*/
+__rte_experimental
int rte_log_register_type_and_pick_level(const char *name, uint32_t level_def);
/**
__attribute__((cold))
#endif
#endif
- __attribute__((format(printf, 3, 4)));
+ __rte_format_printf(3, 4);
/**
* Generates a log message.
* - Negative on error.
*/
int rte_vlog(uint32_t level, uint32_t logtype, const char *format, va_list ap)
- __attribute__((format(printf,3,0)));
+ __rte_format_printf(3, 0);
/**
* Generates a log message.