From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp2.cs.Stanford.EDU (smtp2.cs.stanford.edu [171.64.64.26]) by dpdk.org (Postfix) with ESMTP id E47BD1518 for ; Wed, 28 Sep 2016 22:42:55 +0200 (CEST) Received: from gates-ap-306.stanford.edu ([171.64.70.26]:56793 helo=localhost.localdomain) by smtp2.cs.Stanford.EDU with esmtpsa (TLSv1.2:DHE-RSA-AES128-GCM-SHA256:128) (Exim 4.84_2) (envelope-from ) id 1bpLgs-0001vO-B6; Wed, 28 Sep 2016 13:42:55 -0700 From: John Ousterhout To: david.marchand@6wind.com Cc: dev@dpdk.org, John Ousterhout Date: Wed, 28 Sep 2016 13:42:44 -0700 Message-Id: <20160928204244.8288-1-ouster@cs.stanford.edu> X-Mailer: git-send-email 2.8.3 X-Spam-Score: -104.0 X-Spam-Checker-Version: SpamAssassin on smtp2.cs.Stanford.EDU X-Scan-Signature: 1359b5955e9cd1ecd4a74b934de8d1c8 Subject: [dpdk-dev] [PATCH] log: respect rte_openlog_stream calls before rte_eal_init X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Sep 2016 20:42:56 -0000 Before this patch, rte_eal_init invoked rte_openlog_stream, cancelling any application-specific logger and making it it impossible for an application to capture the initial log messages generated during rte_eal_init. With this patch, applications can capture all of the log messages. Signed-off-by: John Ousterhout --- lib/librte_eal/bsdapp/eal/eal_log.c | 3 +-- lib/librte_eal/common/eal_common_log.c | 13 +++++++------ lib/librte_eal/common/include/rte_log.h | 2 +- lib/librte_eal/linuxapp/eal/eal_log.c | 3 +-- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/lib/librte_eal/bsdapp/eal/eal_log.c b/lib/librte_eal/bsdapp/eal/eal_log.c index a425f7a..c5b1dee 100644 --- a/lib/librte_eal/bsdapp/eal/eal_log.c +++ b/lib/librte_eal/bsdapp/eal/eal_log.c @@ -52,6 +52,5 @@ rte_eal_log_init(const char *id __rte_unused, int facility __rte_unused) int rte_eal_log_early_init(void) { - rte_openlog_stream(stderr); - return 0; + return rte_eal_common_log_init(stderr); } diff --git a/lib/librte_eal/common/eal_common_log.c b/lib/librte_eal/common/eal_common_log.c index 967991a..cfc4c8b 100644 --- a/lib/librte_eal/common/eal_common_log.c +++ b/lib/librte_eal/common/eal_common_log.c @@ -48,11 +48,12 @@ struct rte_logs rte_logs = { .file = NULL, }; +/* Stream to use for logging if rte_logs.file is NULL */ static FILE *default_log_stream; /** * This global structure stores some informations about the message - * that is currently beeing processed by one lcore + * that is currently being processed by one lcore */ struct log_cur_msg { uint32_t loglevel; /**< log level - see rte_log.h */ @@ -68,10 +69,7 @@ static RTE_DEFINE_PER_LCORE(struct log_cur_msg, log_cur_msg); int rte_openlog_stream(FILE *f) { - if (f == NULL) - rte_logs.file = default_log_stream; - else - rte_logs.file = f; + rte_logs.file = f; return 0; } @@ -127,6 +125,8 @@ rte_vlog(uint32_t level, uint32_t logtype, const char *format, va_list ap) { int ret; FILE *f = rte_logs.file; + if (f == NULL) + f = default_log_stream; if ((level > rte_logs.level) || !(logtype & rte_logs.type)) return 0; @@ -158,7 +158,8 @@ rte_log(uint32_t level, uint32_t logtype, const char *format, ...) } /* - * called by environment-specific log init function + * Called during initialization to specify where to log messages if + * openlog_stream hasn't been called. */ int rte_eal_common_log_init(FILE *default_log) diff --git a/lib/librte_eal/common/include/rte_log.h b/lib/librte_eal/common/include/rte_log.h index 919563c..d99baf3 100644 --- a/lib/librte_eal/common/include/rte_log.h +++ b/lib/librte_eal/common/include/rte_log.h @@ -54,7 +54,7 @@ extern "C" { struct rte_logs { uint32_t type; /**< Bitfield with enabled logs. */ uint32_t level; /**< Log level. */ - FILE *file; /**< Pointer to current FILE* for logs. */ + FILE *file; /**< Output file set by rte_openlog_stream, or NULL. */ }; /** Global log informations */ diff --git a/lib/librte_eal/linuxapp/eal/eal_log.c b/lib/librte_eal/linuxapp/eal/eal_log.c index d391100..aafc41c 100644 --- a/lib/librte_eal/linuxapp/eal/eal_log.c +++ b/lib/librte_eal/linuxapp/eal/eal_log.c @@ -136,6 +136,5 @@ rte_eal_log_early_init(void) printf("Cannot configure early_log_stream\n"); return -1; } - rte_openlog_stream(early_log_stream); - return 0; + return rte_eal_common_log_init(early_log_stream); } -- 2.8.3