[git commit] mdev: add syslog logging mode
Denys Vlasenko
vda.linux at googlemail.com
Sun Nov 22 13:33:58 UTC 2020
commit: https://git.busybox.net/busybox/commit/?id=e9003caf6dce05034147bb6382b17154d428f575
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master
If mdev is run as daemon it should be possible to forward the debug
messages to syslog. This feature might be useful if mdev is run with -s
during boot too. OTOH it makes no sense for the daemon to log to
mdev.log. This can be handled by a syslog daemon way better. If the
daemon stays in the foreground due to -f, the messages are still written
to stderr as before.
Signed-off-by: Jan Klötzke <jan at kloetzke.net>
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
util-linux/mdev.c | 24 ++++++++++++++++++------
1 file changed, 18 insertions(+), 6 deletions(-)
diff --git a/util-linux/mdev.c b/util-linux/mdev.c
index d4f06c128..a67baf32e 100644
--- a/util-linux/mdev.c
+++ b/util-linux/mdev.c
@@ -80,7 +80,7 @@
//kbuild:lib-$(CONFIG_MDEV) += mdev.o
//usage:#define mdev_trivial_usage
-//usage: "[-s]" IF_FEATURE_MDEV_DAEMON(" | [-df]")
+//usage: "[-S] " IF_FEATURE_MDEV_DAEMON("[") "[-s]" IF_FEATURE_MDEV_DAEMON(" | [-df]]")
//usage:#define mdev_full_usage "\n\n"
//usage: "mdev -s is to be run during boot to scan /sys and populate /dev.\n"
//usage: IF_FEATURE_MDEV_DAEMON(
@@ -88,6 +88,9 @@
//usage: " -f: stay in foreground.\n"
//usage: )
//usage: "\n"
+//usage: "optional arguments:\n"
+//usage: " -S: Log to syslog too\n"
+//usage: "\n"
//usage: "Bare mdev is a kernel hotplug helper. To activate it:\n"
//usage: " echo /sbin/mdev >/proc/sys/kernel/hotplug\n"
//usage: IF_FEATURE_MDEV_CONF(
@@ -113,6 +116,7 @@
#include "common_bufsiz.h"
#include "xregex.h"
#include <linux/netlink.h>
+#include <syslog.h>
/* "mdev -s" scans /sys/class/xxx, looking for directories which have dev
* file (it is of the form "M:m\n"). Example: /sys/class/tty/tty0/dev
@@ -1237,8 +1241,9 @@ int mdev_main(int argc UNUSED_PARAM, char **argv)
{
enum {
MDEV_OPT_SCAN = 1 << 0,
- MDEV_OPT_DAEMON = 1 << 1,
- MDEV_OPT_FOREGROUND = 1 << 2,
+ MDEV_OPT_SYSLOG = 1 << 1,
+ MDEV_OPT_DAEMON = 1 << 2,
+ MDEV_OPT_FOREGROUND = 1 << 3,
};
int opt;
RESERVE_CONFIG_BUFFER(temp, PATH_MAX + SCRATCH_SIZE);
@@ -1254,7 +1259,7 @@ int mdev_main(int argc UNUSED_PARAM, char **argv)
xchdir("/dev");
- opt = getopt32(argv, "s" IF_FEATURE_MDEV_DAEMON("df"));
+ opt = getopt32(argv, "sS" IF_FEATURE_MDEV_DAEMON("df"));
#if ENABLE_FEATURE_MDEV_CONF
G.filename = "/etc/mdev.conf";
@@ -1264,8 +1269,17 @@ int mdev_main(int argc UNUSED_PARAM, char **argv)
}
#endif
+ if (opt & MDEV_OPT_SYSLOG) {
+ openlog(applet_name, LOG_PID, LOG_DAEMON);
+ logmode |= LOGMODE_SYSLOG;
+ }
+
#if ENABLE_FEATURE_MDEV_DAEMON
if (opt & MDEV_OPT_DAEMON) {
+ // there is no point in write()ing to /dev/null
+ if (!(opt & MDEV_OPT_FOREGROUND))
+ logmode &= ~LOGMODE_STDIO;
+
/*
* Daemon mode listening on uevent netlink socket. Fork away
* after initial scan so that caller can be sure everything
@@ -1276,8 +1290,6 @@ int mdev_main(int argc UNUSED_PARAM, char **argv)
if (!(opt & MDEV_OPT_FOREGROUND))
bb_daemonize_or_rexec(0, argv);
- open_mdev_log(NULL, getpid());
-
daemon_loop(temp, fd);
}
#endif
More information about the busybox-cvs
mailing list