Messages in this thread Patch in this message | | | Date | Tue, 15 Nov 2005 13:17:59 +0100 | From | Guillaume Chazarain <> | Subject | [-mm PATCH 1/2] printk return value: fix it |
| |
What's the true meaning of the printk return value? Should it include the priority prefix length of 3? and what about the timing information? In both cases it was broken:
strace -e write echo 1 > /dev/kmsg => write(1, "1\n", 2) = 5 strace -e write echo "<1>1" > /dev/kmsg => write(1, "<1>1\n", 5) = 8
The returned length was "length of input string + 3", I made it "length of string output to the log buffer".
Note that I couldn't find any printk caller in the kernel interested by its return value besides kmsg_write.
Signed-off-by: Guillaume Chazarain <guichaz@yahoo.fr> Acked-By: Tim Bird <tim.bird@am.sony.com>
--- printk.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)
-- Guillaume
diff -r d18e06f9c571 kernel/printk.c --- a/kernel/printk.c Mon Nov 14 10:22:49 2005 +0800 +++ b/kernel/printk.c Mon Nov 14 15:02:56 2005 +0100 @@ -569,7 +569,7 @@ p[1] <= '7' && p[2] == '>') { loglev_char = p[1]; p += 3; - printed_len += 3; + printed_len -= 3; } else { loglev_char = default_message_loglevel + '0'; @@ -584,7 +584,7 @@ for (tp = tbuf; tp < tbuf + tlen; tp++) emit_log_char(*tp); - printed_len += tlen - 3; + printed_len += tlen; } else { if (p[0] != '<' || p[1] < '0' || p[1] > '7' || p[2] != '>') { @@ -592,8 +592,8 @@ emit_log_char(default_message_loglevel + '0'); emit_log_char('>'); + printed_len += 3; } - printed_len += 3; } log_level_unknown = 0; if (!*p)
| |