From: Stephen Hemminger <shemminger@vyatta.com>
To: dev@dpdk.org
Subject: [dpdk-dev] [PATCH 7/7] eal: add ability to override DPDK syslog parameters
Date: Thu, 30 May 2013 10:12:41 -0700 [thread overview]
Message-ID: <20130530171627.135792331@vyatta.com> (raw)
In-Reply-To: <20130530171234.301927271@vyatta.com>
[-- Attachment #1: syslog.patch --]
[-- Type: text/plain, Size: 5916 bytes --]
By default, DPDK based applications would only allow logging
to syslog as "rte", DAEMON; but for any production application more
control is desired to allow using actual application name and
overriding the facility.
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
---
lib/librte_eal/common/include/eal_private.h | 2
lib/librte_eal/linuxapp/eal/eal.c | 58 ++++++++++++++++-
lib/librte_eal/linuxapp/eal/eal_log.c | 4 -
lib/librte_eal/linuxapp/eal/include/eal_internal_cfg.h | 1
4 files changed, 61 insertions(+), 4 deletions(-)
--- a/lib/librte_eal/common/include/eal_private.h 2013-05-29 17:03:20.167850142 -0700
+++ b/lib/librte_eal/common/include/eal_private.h 2013-05-29 17:05:15.066310021 -0700
@@ -115,7 +115,7 @@ int rte_eal_log_early_init(void);
* @return
* 0 on success, negative on error
*/
-int rte_eal_log_init(void);
+int rte_eal_log_init(const char *id, int facility);
/**
* Init the default log stream
--- a/lib/librte_eal/linuxapp/eal/eal.c 2013-05-29 17:03:20.167850142 -0700
+++ b/lib/librte_eal/linuxapp/eal/eal.c 2013-05-29 17:12:09.317086933 -0700
@@ -40,6 +40,7 @@
#include <stdarg.h>
#include <unistd.h>
#include <pthread.h>
+#include <syslog.h>
#include <getopt.h>
#include <fcntl.h>
#include <stddef.h>
@@ -82,6 +83,7 @@
#define OPT_NO_PCI "no-pci"
#define OPT_NO_HUGE "no-huge"
#define OPT_FILE_PREFIX "file-prefix"
+#define OPT_SYSLOG "syslog"
#define RTE_EAL_BLACKLIST_SIZE 0x100
@@ -265,6 +267,7 @@ eal_usage(const char *prgname)
" (multiple -b options are alowed)\n"
" -m MB : memory to allocate (default = size of hugemem)\n"
" -r NUM : force number of memory ranks (don't detect)\n"
+ " --"OPT_SYSLOG" : set syslog facility\n"
" --"OPT_HUGE_DIR" : directory where hugetlbfs is mounted\n"
" --"OPT_PROC_TYPE": type of this process\n"
" --"OPT_FILE_PREFIX": prefix for hugepage filenames\n"
@@ -369,6 +372,45 @@ eal_parse_blacklist_opt(const char *opta
return (idx);
}
+static int
+eal_parse_syslog(const char *facility)
+{
+ int i;
+ static struct {
+ const char *name;
+ int value;
+ } map[] = {
+ { "auth", LOG_AUTH },
+ { "cron", LOG_CRON },
+ { "daemon", LOG_DAEMON },
+ { "ftp", LOG_FTP },
+ { "kern", LOG_KERN },
+ { "lpr", LOG_LPR },
+ { "mail", LOG_MAIL },
+ { "news", LOG_NEWS },
+ { "syslog", LOG_SYSLOG },
+ { "user", LOG_USER },
+ { "uucp", LOG_UUCP },
+ { "local0", LOG_LOCAL0 },
+ { "local1", LOG_LOCAL1 },
+ { "local2", LOG_LOCAL2 },
+ { "local3", LOG_LOCAL3 },
+ { "local4", LOG_LOCAL4 },
+ { "local5", LOG_LOCAL5 },
+ { "local6", LOG_LOCAL6 },
+ { "local7", LOG_LOCAL7 },
+ { NULL, 0 }
+ };
+
+ for (i = 0; map[i].name; i++) {
+ if (!strcmp(facility, map[i].name)) {
+ internal_config.syslog_facility = map[i].value;
+ return 0;
+ }
+ }
+ return -1;
+}
+
/* Parse the argument given in the command line of the application */
static int
@@ -389,6 +431,7 @@ eal_parse_args(int argc, char **argv)
{OPT_NO_SHCONF, 0, 0, 0},
{OPT_PROC_TYPE, 1, 0, 0},
{OPT_FILE_PREFIX, 1, 0, 0},
+ {OPT_SYSLOG, 1, 0, 0},
{0, 0, 0, 0}
};
@@ -399,6 +442,7 @@ eal_parse_args(int argc, char **argv)
internal_config.force_nchannel = 0;
internal_config.hugefile_prefix = HUGEFILE_PREFIX_DEFAULT;
internal_config.hugepage_dir = NULL;
+ internal_config.syslog_facility = LOG_DAEMON;
#ifdef RTE_LIBEAL_USE_HPET
internal_config.no_hpet = 0;
#else
@@ -487,6 +531,14 @@ eal_parse_args(int argc, char **argv)
else if (!strcmp(lgopts[option_index].name, OPT_FILE_PREFIX)) {
internal_config.hugefile_prefix = optarg;
}
+ else if (!strcmp(lgopts[option_index].name, OPT_SYSLOG)) {
+ if (eal_parse_syslog(optarg) < 0) {
+ RTE_LOG(ERR, EAL, "invalid parameters for --"
+ OPT_SYSLOG "\n");
+ eal_usage(prgname);
+ return -1;
+ }
+ }
break;
default:
@@ -538,6 +590,10 @@ rte_eal_init(int argc, char **argv)
{
int i, fctret, ret;
pthread_t thread_id;
+ const char *logid;
+
+ logid = strrchr(argv[0], '/');
+ logid = strdup(logid ? logid + 1: argv[0]);
thread_id = pthread_self();
@@ -585,7 +641,7 @@ rte_eal_init(int argc, char **argv)
if (rte_eal_tailqs_init() < 0)
rte_panic("Cannot init tail queues for objects\n");
- if (rte_eal_log_init() < 0)
+ if (rte_eal_log_init(logid, internal_config.syslog_facility) < 0)
rte_panic("Cannot init logs\n");
if (rte_eal_alarm_init() < 0)
--- a/lib/librte_eal/linuxapp/eal/eal_log.c 2013-05-29 17:03:20.167850142 -0700
+++ b/lib/librte_eal/linuxapp/eal/eal_log.c 2013-05-29 17:05:15.066310021 -0700
@@ -119,7 +119,7 @@ static cookie_io_functions_t console_log
* once memzones are available.
*/
int
-rte_eal_log_init(void)
+rte_eal_log_init(const char *id, int facility)
{
FILE *log_stream;
@@ -127,7 +127,7 @@ rte_eal_log_init(void)
if (log_stream == NULL)
return -1;
- openlog("rte", LOG_NDELAY | LOG_PID, LOG_DAEMON);
+ openlog(id, LOG_NDELAY | LOG_PID, facility);
if (rte_eal_common_log_init(log_stream) < 0)
return -1;
--- a/lib/librte_eal/linuxapp/eal/include/eal_internal_cfg.h 2013-05-29 17:03:20.167850142 -0700
+++ b/lib/librte_eal/linuxapp/eal/include/eal_internal_cfg.h 2013-05-29 17:05:15.066310021 -0700
@@ -65,6 +65,7 @@ struct internal_config {
volatile unsigned no_hpet; /* true to disable HPET */
volatile unsigned vmware_tsc_map; /* true to use VMware TSC mapping instead of native TSC */
volatile unsigned no_shconf; /* true if there is no shared config */
+ volatile int syslog_facility; /* facility passed to openlog() */
volatile enum rte_proc_type_t process_type; /* multi-process proc type */
const char *hugefile_prefix; /* the base filename of hugetlbfs files */
const char *hugepage_dir; /* specific hugetlbfs directory to use */
next prev parent reply other threads:[~2013-05-30 17:21 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-30 17:12 [dpdk-dev] [PATCH 0/7] Vyatta patches Stephen Hemminger
2013-05-30 17:12 ` [dpdk-dev] [PATCH 1/7] [PATCH 4/8] igb: workaround errata with wthresh on 82576 Stephen Hemminger
2013-06-05 14:22 ` Vincent JARDIN
2013-06-12 10:06 ` [dpdk-dev] [PATCH 1/7] " Thomas Monjalon
2013-05-30 17:12 ` [dpdk-dev] [PATCH 2/7] rte_timer: optimize for empty case Stephen Hemminger
2013-06-05 14:25 ` Vincent JARDIN
2013-06-12 10:07 ` Thomas Monjalon
2013-05-30 17:12 ` [dpdk-dev] [PATCH 3/7] optimize log/panic Stephen Hemminger
2013-06-05 14:34 ` Vincent JARDIN
2013-06-12 10:09 ` Thomas Monjalon
2013-05-30 17:12 ` [dpdk-dev] [PATCH 4/7] eal: support different modules Stephen Hemminger
2013-06-03 8:58 ` Damien Millescamps
2013-06-03 15:41 ` Stephen Hemminger
2013-06-03 16:36 ` Thomas Monjalon
2013-06-03 17:26 ` Stephen Hemminger
2013-06-04 9:17 ` Damien Millescamps
2013-06-03 16:08 ` Antti Kantee
2013-06-03 16:29 ` Thomas Monjalon
2013-06-03 17:25 ` Stephen Hemminger
2013-06-03 18:40 ` Antti Kantee
2013-05-30 17:12 ` [dpdk-dev] [PATCH 5/7] pci: support multiple PCI regions per device Stephen Hemminger
2013-06-03 16:41 ` Thomas Monjalon
2013-06-05 14:50 ` Damien Millescamps
2013-06-05 15:49 ` Stephen Hemminger
2013-06-05 18:05 ` Damien Millescamps
2013-06-05 21:33 ` Stephen Hemminger
2013-06-18 1:28 ` somnath kotur
2013-07-16 8:53 ` Thomas Monjalon
2013-07-19 16:44 ` Stephen Hemminger
2013-05-30 17:12 ` [dpdk-dev] [PATCH 6/7] igb_uio: pci_block_user_cfg_access is unsafe, remove it Stephen Hemminger
2013-05-30 17:12 ` Stephen Hemminger [this message]
2013-06-05 14:36 ` [dpdk-dev] [PATCH 7/7] eal: add ability to override DPDK syslog parameters Vincent JARDIN
2013-06-12 10:18 ` Thomas Monjalon
2013-05-30 22:20 ` [dpdk-dev] [PATCH 0/7] Vyatta patches Thomas Monjalon
2013-05-31 9:29 ` Damien Millescamps
2013-05-31 15:45 ` Stephen Hemminger
2013-05-31 16:44 ` Damien Millescamps
2013-05-31 17:00 ` Stephen Hemminger
2013-06-03 15:22 ` Thomas Monjalon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130530171627.135792331@vyatta.com \
--to=shemminger@vyatta.com \
--cc=dev@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).