log: add log stream accessor
authorDavid Marchand <david.marchand@redhat.com>
Fri, 25 Oct 2019 13:56:06 +0000 (15:56 +0200)
committerDavid Marchand <david.marchand@redhat.com>
Sun, 27 Oct 2019 09:41:08 +0000 (10:41 +0100)
Define an accessor so that users can write their debug message to the
same stream than the rte_log infrastructure.
Use it in the qat infrastructure.

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Kevin Traynor <ktraynor@redhat.com>
drivers/common/qat/qat_logs.c
drivers/common/qat/qat_logs.h
lib/librte_eal/common/eal_common_log.c
lib/librte_eal/common/include/rte_log.h
lib/librte_eal/rte_eal_version.map

index 7a86170..f97aba1 100644 (file)
@@ -19,8 +19,7 @@ qat_hexdump_log(uint32_t level, uint32_t logtype, const char *title,
        if (level > (uint32_t)(rte_log_get_level(logtype)))
                return 0;
 
-       rte_hexdump(rte_logs.file == NULL ? stderr : rte_logs.file,
-                               title, buf, len);
+       rte_hexdump(rte_log_get_stream(), title, buf, len);
        return 0;
 }
 
index 4baea12..2e4d394 100644 (file)
@@ -24,8 +24,7 @@ extern int qat_dp_logtype;
  *
  * Dump out the message buffer in a special hex dump output format with
  * characters printed for each line of 16 hex values. The message will be sent
- * to the stream defined by rte_logs.file or to stderr in case of rte_logs.file
- * is undefined.
+ * to the stream used by the rte_log infrastructure.
  */
 int
 qat_hexdump_log(uint32_t level, uint32_t logtype, const char *title,
index 4f6f227..e0a7bef 100644 (file)
@@ -71,6 +71,24 @@ rte_openlog_stream(FILE *f)
        return 0;
 }
 
+FILE *
+rte_log_get_stream(void)
+{
+       FILE *f = rte_logs.file;
+
+       if (f == NULL) {
+               /*
+                * Grab the current value of stderr here, rather than
+                * just initializing default_log_stream to stderr. This
+                * ensures that we will always use the current value
+                * of stderr, even if the application closes and
+                * reopens it.
+                */
+               return default_log_stream ? : stderr;
+       }
+       return f;
+}
+
 /* Set global log level */
 void
 rte_log_set_global_level(uint32_t level)
@@ -396,21 +414,8 @@ rte_log_dump(FILE *f)
 int
 rte_vlog(uint32_t level, uint32_t logtype, const char *format, va_list ap)
 {
+       FILE *f = rte_log_get_stream();
        int ret;
-       FILE *f = rte_logs.file;
-       if (f == NULL) {
-               f = default_log_stream;
-               if (f == NULL) {
-                       /*
-                        * Grab the current value of stderr here, rather than
-                        * just initializing default_log_stream to stderr. This
-                        * ensures that we will always use the current value
-                        * of stderr, even if the application closes and
-                        * reopens it.
-                        */
-                       f = stderr;
-               }
-       }
 
        if (level > rte_logs.level)
                return 0;
index cbb4184..1bb0e66 100644 (file)
@@ -101,6 +101,19 @@ extern struct rte_logs rte_logs;
  */
 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.
  *
index 0887549..6d7e0e4 100644 (file)
@@ -417,4 +417,7 @@ EXPERIMENTAL {
        rte_mcfg_timer_lock;
        rte_mcfg_timer_unlock;
        rte_rand_max;
+
+       # added in 19.11
+       rte_log_get_stream;
 };