/*-
* BSD LICENSE
*
- * Copyright(c) 2010-2013 Intel Corporation. All rights reserved.
+ * Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
} __rte_cache_aligned;
static struct log_cur_msg log_cur_msg[RTE_MAX_LCORE]; /**< per core log */
-/* early logs */
-
-/*
- * early log function, used during boot when mempool (hence log
- * history) is not available
- */
-static ssize_t
-early_log_write(__attribute__((unused)) void *c, const char *buf, size_t size)
-{
- ssize_t ret;
- ret = fwrite(buf, size, 1, stdout);
- fflush(stdout);
- if (ret == 0)
- return -1;
- return ret;
-}
-
-static ssize_t
-early_log_read(__attribute__((unused)) void *c,
- __attribute__((unused)) char *buf,
- __attribute__((unused)) size_t size)
-{
- return 0;
-}
-
-/*
- * this is needed because cookies_io_functions_t has a different
- * prototype between newlib and glibc
- */
-#ifdef RTE_EXEC_ENV_LINUXAPP
-static int
-early_log_seek(__attribute__((unused)) void *c,
- __attribute__((unused)) off64_t *offset,
- __attribute__((unused)) int whence)
-{
- return -1;
-}
-#else
-static int
-early_log_seek(__attribute__((unused)) void *c,
- __attribute__((unused)) _off_t *offset,
- __attribute__((unused)) int whence)
-{
- return -1;
-}
-#endif
-
-static int
-early_log_close(__attribute__((unused)) void *c)
-{
- return 0;
-}
-
-static cookie_io_functions_t early_log_func = {
- .read = early_log_read,
- .write = early_log_write,
- .seek = early_log_seek,
- .close = early_log_close
-};
-static FILE *early_log_stream;
/* default logs */
return log_cur_msg[lcore_id].logtype;
}
-/* Dump log history on console */
+/* Dump log history to file */
void
-rte_log_dump_history(void)
+rte_log_dump_history(FILE *out)
{
struct log_history_list tmp_log_history;
struct log_history *hist_buf;
STAILQ_REMOVE_HEAD(&tmp_log_history, next);
/* write on stdout */
- if (fwrite(hist_buf->buf, hist_buf->size, 1, stdout) == 0) {
+ if (fwrite(hist_buf->buf, hist_buf->size, 1, out) == 0) {
rte_mempool_mp_put(log_history_mp, hist_buf);
break;
}
/* put back message structure in pool */
rte_mempool_mp_put(log_history_mp, hist_buf);
}
- fflush(stdout);
+ fflush(out);
rte_spinlock_unlock(&log_dump_lock);
}
return ret;
}
-/*
- * init the log library, called by rte_eal_init() to enable early
- * logs
- */
-int
-rte_eal_log_early_init(void)
-{
- early_log_stream = fopencookie(NULL, "w+", early_log_func);
- if (early_log_stream == NULL) {
- printf("Cannot configure early_log_stream\n");
- return -1;
- }
- rte_openlog_stream(early_log_stream);
- return 0;
-}
-
/*
* called by environment-specific log init function to initialize log
* history