summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys-utils/dmesg.17
-rw-r--r--sys-utils/dmesg.c9
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"));