remove trailing whitespaces
[dpdk.git] / lib / librte_eal / linuxapp / eal / eal_log.c
index e63ff48..94dedfb 100644 (file)
@@ -1,13 +1,13 @@
 /*-
  *   BSD LICENSE
- * 
+ *
  *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
  *   All rights reserved.
- * 
+ *
  *   Redistribution and use in source and binary forms, with or without
  *   modification, are permitted provided that the following conditions
  *   are met:
- * 
+ *
  *     * Redistributions of source code must retain the above copyright
  *       notice, this list of conditions and the following disclaimer.
  *     * Redistributions in binary form must reproduce the above copyright
@@ -17,7 +17,7 @@
  *     * Neither the name of Intel Corporation nor the names of its
  *       contributors may be used to endorse or promote products derived
  *       from this software without specific prior written permission.
- * 
+ *
  *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
@@ -133,3 +133,65 @@ rte_eal_log_init(const char *id, int facility)
        return 0;
 }
 
+/* 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;
+}
+
+static int
+early_log_seek(__attribute__((unused)) void *c,
+              __attribute__((unused)) off64_t *offset,
+              __attribute__((unused)) int whence)
+{
+       return -1;
+}
+
+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;
+
+/*
+ * 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;
+}