/* get a buffer for adding in history */
if (log_history_size > RTE_LOG_HISTORY) {
hist_buf = STAILQ_FIRST(&log_history);
- STAILQ_REMOVE_HEAD(&log_history, next);
+ if (hist_buf) {
+ STAILQ_REMOVE_HEAD(&log_history, next);
+ log_history_size--;
+ }
}
else {
if (rte_mempool_mc_get(log_history_mp, &obj) < 0)
rte_spinlock_lock(&log_list_lock);
tmp_log_history = log_history;
STAILQ_INIT(&log_history);
+ log_history_size = 0;
rte_spinlock_unlock(&log_list_lock);
for (i=0; i<RTE_LOG_HISTORY; i++) {
* defined by the previous call to rte_openlog_stream().
*/
int
-rte_vlog(__attribute__((unused)) uint32_t level,
- __attribute__((unused)) uint32_t logtype,
- const char *format, va_list ap)
+rte_vlog(uint32_t level, uint32_t logtype, const char *format, va_list ap)
{
int ret;
FILE *f = rte_logs.file;
unsigned lcore_id;
+ if ((level > rte_logs.level) || !(logtype & rte_logs.type))
+ return 0;
+
/* save loglevel and logtype in a global per-lcore variable */
lcore_id = rte_lcore_id();
if (lcore_id < RTE_MAX_LCORE) {
/*
* Generates a log message The message will be sent in the stream
* defined by the previous call to rte_openlog_stream().
+ * No need to check level here, done by rte_vlog().
*/
int
rte_log(uint32_t level, uint32_t logtype, const char *format, ...)
rte_openlog_stream(default_log);
return 0;
}
-