From: Kay Sievers <kay@vrfy.org>
To: Greg Kroah-Hartmann <greg@kroah.com>
Cc: Yinghai Lu <yinghai@kernel.org>, Joe Perches <joe@perches.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Sasha Levin <levinsasha928@gmail.com>,
Ingo Molnar <mingo@kernel.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH RESEND 1/3] printk: convert byte-buffer to variable-length record buffer
Date: Thu, 10 May 2012 04:30:45 +0200 [thread overview]
Message-ID: <1336617045.25027.2.camel@mop> (raw)
In-Reply-To: <20120509230649.GA10695@kroah.com>
On Wed, 2012-05-09 at 16:06 -0700, Greg Kroah-Hartmann wrote:
> On Wed, May 09, 2012 at 04:02:40PM -0700, Yinghai Lu wrote:
> > On Wed, May 9, 2012 at 7:37 AM, Kay Sievers <kay@vrfy.org> wrote:
> > >
> > >> Changing printk semantics and trying to stabilize
> > >> printk message content are bad ideas though.
> > >
> > > Again, nobody talks about content of here.
> >
> > printk_time=1 does not work anymore with this patch on serial console.
>
> Known issue, I think Kay is working on the solution for this right
> now...
Sure, and this seems to work for me.
Thanks,
Kay
From: Kay Sievers <kay@vrfy.org>
Subject: printk() - restore timestamp printing at console output
The output of the timestamps got lost with the conversion of the
kmsg buffer to records; restore the old behavior.
Document, that CONFIG_PRINTK_TIME now only controls the output of
the timestamps in the syslog() system call and on the console, and
not the recording of the timestamps.
Signed-off-by: Kay Sievers <kay@vrfy.org>
---
kernel/printk.c | 43 ++++++++++++++++++++++++++-----------------
lib/Kconfig.debug | 16 ++++++++++------
2 files changed, 36 insertions(+), 23 deletions(-)
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -786,6 +786,22 @@ static bool printk_time;
#endif
module_param_named(time, printk_time, bool, S_IRUGO | S_IWUSR);
+static size_t prepend_timestamp(unsigned long long t, char *buf)
+{
+ unsigned long rem_ns;
+
+ if (!printk_time)
+ return 0;
+
+ if (!buf)
+ return 15;
+
+ rem_ns = do_div(t, 1000000000);
+
+ return sprintf(buf, "[%5lu.%06lu] ",
+ (unsigned long) t, rem_ns / 1000);
+}
+
static int syslog_print_line(u32 idx, char *text, size_t size)
{
struct log *msg;
@@ -800,9 +816,7 @@ static int syslog_print_line(u32 idx, ch
len++;
if (msg->level > 99)
len++;
-
- if (printk_time)
- len += 15;
+ len += prepend_timestamp(0, NULL);
len += msg->text_len;
len++;
@@ -810,15 +824,7 @@ static int syslog_print_line(u32 idx, ch
}
len = sprintf(text, "<%u>", msg->level);
-
- if (printk_time) {
- unsigned long long t = msg->ts_nsec;
- unsigned long rem_ns = do_div(t, 1000000000);
-
- len += sprintf(text + len, "[%5lu.%06lu] ",
- (unsigned long) t, rem_ns / 1000);
- }
-
+ len += prepend_timestamp(msg->ts_nsec, text + len);
if (len + msg->text_len > size)
return -EINVAL;
memcpy(text + len, log_text(msg), msg->text_len);
@@ -1741,7 +1747,7 @@ again:
for (;;) {
struct log *msg;
static char text[LOG_LINE_MAX];
- size_t len;
+ size_t len, l;
int level;
raw_spin_lock_irqsave(&logbuf_lock, flags);
@@ -1761,10 +1767,13 @@ again:
msg = log_from_idx(console_idx);
level = msg->level & 7;
- len = msg->text_len;
- if (len+1 >= sizeof(text))
- len = sizeof(text)-1;
- memcpy(text, log_text(msg), len);
+
+ len = prepend_timestamp(msg->ts_nsec, text);
+ l = msg->text_len;
+ if (len + l + 1 >= sizeof(text))
+ l = sizeof(text) - len - 1;
+ memcpy(text + len, log_text(msg), l);
+ len += l;
text[len++] = '\n';
console_idx = log_next(console_idx);
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -3,12 +3,16 @@ config PRINTK_TIME
bool "Show timing information on printks"
depends on PRINTK
help
- Selecting this option causes timing information to be
- included in printk output. This allows you to measure
- the interval between kernel operations, including bootup
- operations. This is useful for identifying long delays
- in kernel startup. Or add printk.time=1 at boot-time.
- See Documentation/kernel-parameters.txt
+ Selecting this option causes time stamps of the printk()
+ messages to be added to the output of the syslog() system
+ call and at the console.
+
+ The timestamp is always recorded internally, and exported
+ to /dev/kmsg. This flag just specifies if the timestamp should
+ be included, not that the timestamp is recorded.
+
+ The behavior is also controlled by the kernel command line
+ parameter printk.time=1. See Documentation/kernel-parameters.txt
config DEFAULT_MESSAGE_LOGLEVEL
int "Default message log level (1-7)"
next prev parent reply other threads:[~2012-05-10 2:31 UTC|newest]
Thread overview: 100+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-03 0:29 [PATCH RESEND 1/3] printk: convert byte-buffer to variable-length record buffer Kay Sievers
2012-05-03 19:48 ` Peter Zijlstra
2012-05-03 19:54 ` Kay Sievers
2012-05-03 19:55 ` Peter Zijlstra
2012-05-03 19:56 ` Linus Torvalds
2012-05-03 20:02 ` Peter Zijlstra
2012-05-03 20:09 ` Linus Torvalds
2012-05-03 20:11 ` Peter Zijlstra
2012-05-03 20:18 ` Greg Kroah-Hartmann
2012-05-08 8:48 ` Sasha Levin
2012-05-08 11:14 ` Kay Sievers
2012-05-08 13:33 ` Sasha Levin
2012-05-08 14:29 ` Kay Sievers
2012-05-08 15:33 ` Kay Sievers
2012-05-08 15:57 ` Sasha Levin
2012-05-08 16:27 ` Kay Sievers
2012-05-08 22:57 ` Greg Kroah-Hartmann
2012-05-09 3:52 ` Linus Torvalds
2012-05-09 4:06 ` Joe Perches
2012-05-09 4:11 ` Sasha Levin
2012-05-09 4:27 ` Linus Torvalds
2012-05-09 4:36 ` Linus Torvalds
2012-05-09 7:07 ` Ingo Molnar
2012-05-09 13:21 ` Kay Sievers
2012-05-09 13:29 ` Kay Sievers
2012-05-10 0:54 ` Kay Sievers
2012-05-10 1:18 ` Linus Torvalds
2012-05-10 2:32 ` Kay Sievers
2012-05-10 2:46 ` Joe Perches
2012-05-10 16:39 ` Kay Sievers
2012-05-10 16:47 ` Linus Torvalds
2012-05-10 18:49 ` Tony Luck
2012-05-10 19:09 ` Kay Sievers
2012-05-10 20:14 ` Ted Ts'o
2012-05-10 20:37 ` Joe Perches
2012-05-10 20:39 ` Kay Sievers
2012-05-10 20:46 ` Joe Perches
2012-05-10 20:52 ` Linus Torvalds
2012-05-10 21:11 ` Joe Perches
2012-05-10 21:15 ` Kay Sievers
2012-05-10 21:58 ` Linus Torvalds
2012-05-11 0:13 ` Joe Perches
2012-05-11 0:38 ` Kay Sievers
2012-05-11 1:23 ` Kay Sievers
2012-05-14 18:46 ` Kay Sievers
2012-05-10 21:01 ` Kay Sievers
2012-05-10 20:38 ` Kay Sievers
2012-05-09 9:38 ` Kay Sievers
2012-05-09 13:50 ` Joe Perches
2012-05-09 14:37 ` Kay Sievers
2012-05-09 23:02 ` Yinghai Lu
2012-05-09 23:06 ` Greg Kroah-Hartmann
2012-05-10 2:30 ` Kay Sievers [this message]
2012-05-11 10:35 ` Sasha Levin
2012-05-11 15:19 ` Greg KH
2012-05-11 15:22 ` Sasha Levin
2012-05-11 15:35 ` Linus Torvalds
2012-05-11 15:40 ` Kay Sievers
2012-05-11 15:47 ` Linus Torvalds
2012-05-11 19:51 ` Mark Lord
2012-05-11 20:02 ` Linus Torvalds
2012-05-12 18:04 ` Mark Lord
2012-05-12 7:43 ` Sasha Levin
2012-05-12 18:35 ` Linus Torvalds
2012-05-13 11:08 ` Kay Sievers
2012-05-13 13:22 ` Mark Lord
2012-05-13 18:01 ` Linus Torvalds
2012-05-13 22:19 ` Mark Lord
2012-05-14 16:40 ` valdis.kletnieks
2012-05-17 3:44 ` H. Peter Anvin
2012-05-13 21:48 ` Kay Sievers
2012-05-13 21:30 ` Kay Sievers
2012-05-26 11:11 ` Anton Vorontsov
2012-05-27 14:23 ` Kay Sievers
2012-05-29 16:07 ` Kay Sievers
2012-05-29 16:14 ` Joe Perches
2012-05-29 16:34 ` Kay Sievers
2012-05-29 16:51 ` Joe Perches
2012-05-29 17:11 ` Luck, Tony
2012-05-29 17:22 ` Kay Sievers
2012-05-30 11:29 ` Kay Sievers
2012-06-06 6:33 ` Greg Kroah-Hartmann
2012-06-15 0:04 ` Greg KH
2012-06-15 1:31 ` Anton Vorontsov
2012-06-15 12:07 ` Kay Sievers
2012-06-15 12:23 ` Ingo Molnar
2012-06-15 21:53 ` Greg KH
2012-06-15 12:23 ` Anton Vorontsov
2012-06-15 20:54 ` Tony Luck
2012-11-28 13:33 ` Michael Kerrisk
2012-11-28 16:22 ` Kay Sievers
2012-11-28 16:37 ` Linus Torvalds
2012-11-28 16:49 ` Kay Sievers
2012-11-28 17:51 ` Kay Sievers
2012-11-29 13:18 ` Michael Kerrisk (man-pages)
2012-11-29 13:28 ` Kay Sievers
2012-11-29 13:37 ` Michael Kerrisk (man-pages)
2012-11-29 14:08 ` Kay Sievers
2012-11-29 14:18 ` Michael Kerrisk (man-pages)
2012-11-29 14:31 ` Kay Sievers
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=1336617045.25027.2.camel@mop \
--to=kay@vrfy.org \
--cc=greg@kroah.com \
--cc=joe@perches.com \
--cc=levinsasha928@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=torvalds@linux-foundation.org \
--cc=yinghai@kernel.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).