diff options
-rw-r--r-- | sys-utils/dmesg.1 | 7 | ||||
-rw-r--r-- | sys-utils/dmesg.c | 9 |
2 files changed, 14 insertions, 2 deletions
diff --git a/sys-utils/dmesg.1 b/sys-utils/dmesg.1 index 5bb0dd2dd..8e6088e49 100644 --- a/sys-utils/dmesg.1 +++ b/sys-utils/dmesg.1 @@ -98,6 +98,13 @@ will print or clear the kernel ring buffer. .IP "\fB\-r\fR, \fB\-\-raw\fR" Print the raw message buffer, i.e., do not strip the log level prefixes. +.IP "\fB\-S\fR, \fB\-\-syslog\fR" +Force to use +.BR syslog(2) +kernel interface to read kernel messages. The default is to use /dev/kmsg rather +than +.BR syslog(2) +since kernel 3.5.0. .IP "\fB\-s\fR, \fB\-\-buffer-size \fIsize\fR Use a buffer of .I size diff --git a/sys-utils/dmesg.c b/sys-utils/dmesg.c index 9606f0fcd..0bf47a11d 100644 --- a/sys-utils/dmesg.c +++ b/sys-utils/dmesg.c @@ -177,6 +177,7 @@ static void __attribute__((__noreturn__)) usage(FILE *out) " -l, --level <list> restrict output to defined levels\n" " -n, --console-level <level> set level of messages printed to console\n" " -r, --raw print the raw message buffer\n" + " -S, --syslog force to use syslog(2) rather than /dev/kmsg\n" " -s, --buffer-size <size> buffer size to query the kernel ring buffer\n" " -T, --ctime show human readable timestamp (could be \n" " inaccurate if you have used SUSPEND/RESUME)\n" @@ -716,7 +717,7 @@ int main(int argc, char *argv[]) static struct dmesg_control ctl = { .filename = NULL, .action = SYSLOG_ACTION_READ_ALL, - .method = DMESG_METHOD_SYSLOG, + .method = DMESG_METHOD_KMSG, .kmsg = -1, }; @@ -742,6 +743,7 @@ int main(int argc, char *argv[]) { "help", no_argument, NULL, 'h' }, { "kernel", no_argument, NULL, 'k' }, { "level", required_argument, NULL, 'l' }, + { "syslog", no_argument, NULL, 'S' }, { "raw", no_argument, NULL, 'r' }, { "read-clear", no_argument, NULL, 'c' }, { "show-delta", no_argument, NULL, 'd' }, @@ -757,7 +759,7 @@ int main(int argc, char *argv[]) textdomain(PACKAGE); atexit(close_stdout); - while ((c = getopt_long(argc, argv, "CcDdEF:f:hkl:n:rs:TtuVx", + while ((c = getopt_long(argc, argv, "CcDdEF:f:hkl:n:rSs:TtuVx", longopts, NULL)) != -1) { switch (c) { case 'C': @@ -810,6 +812,9 @@ int main(int argc, char *argv[]) case 'r': ctl.raw = 1; break; + case 'S': + ctl.method = DMESG_METHOD_SYSLOG; + break; case 's': ctl.bufsize = strtou32_or_err(optarg, _("invalid buffer size argument")); |