Re: [alsa-devel] [PATCH 0/8] Rework KERN_<LEVEL>

On Wed, 2012-06-06 at 01:48 +0200, Kay Sievers wrote:
On Wed, Jun 6, 2012 at 1:43 AM, Joe Perches joe@perches.com wrote:
On Wed, 2012-06-06 at 01:39 +0200, Kay Sievers wrote:
# echo "\001Hello Andrew" > /dev/kmsg /dev/kmsg has 12,774,2462339252;\001Hello Andrew
Try "echo -e"? The stuff is copied verbatim otherwise.
# echo -e "\001Hello Kay" > /dev/kmsg gives 12,776,3046752764;\x01Hello Kay
Don't you need two bytes to trigger the logic?
Yes. Angle brackets fore and aft.
If you use a "<n>" prefix for write to /dev/kmsg, then it's supported just like before.
Otherwise, it's emitted at KERN_DEFAULT.
cheers, Joe

On Tue, 05 Jun 2012 16:52:25 -0700 Joe Perches joe@perches.com wrote:
On Wed, 2012-06-06 at 01:48 +0200, Kay Sievers wrote:
On Wed, Jun 6, 2012 at 1:43 AM, Joe Perches joe@perches.com wrote:
On Wed, 2012-06-06 at 01:39 +0200, Kay Sievers wrote:
# echo "\001Hello Andrew" > /dev/kmsg /dev/kmsg has 12,774,2462339252;\001Hello Andrew
Try "echo -e"? The stuff is copied verbatim otherwise.
# echo -e "\001Hello Kay" > /dev/kmsg gives 12,776,3046752764;\x01Hello Kay
Don't you need two bytes to trigger the logic?
Yes. Angle brackets fore and aft.
he means
echo "\0014Hello Joe" > /dev/kmsg ^
It needs one of [0-7cd] to trigger the prefix handling.

On Tue, 2012-06-05 at 16:58 -0700, Andrew Morton wrote:
echo "\0014Hello Joe" > /dev/kmsg
# echo -e "\x014Hello Me" > /dev/kmsg gives: 12,778,4057982669;Hello Me
#echo -e "\x011Hello Me_2" > /dev/kmsg gives: 12,779,4140452093;Hello Me_2
I didn't change devkmsg_writev so the original parsing style for "<.>" is unchanged.
from printk.c:
static ssize_t devkmsg_writev(struct kiocb *iocb, const struct iovec *iv, unsigned long count, loff_t pos) [...] int level = default_message_loglevel; [...] if (line[0] == '<') { char *endp = NULL;
i = simple_strtoul(line+1, &endp, 10); if (endp && endp[0] == '>') { level = i & 7; if (i >> 3) facility = i >> 3; endp++; len -= endp - line; line = endp; } } line[len] = '\0';
printk_emit(facility, level, NULL, 0, "%s", line); []
level is what matters.
from dmesg -r
<12>[ 2462.339252] \001Hello Andrew <9>[ 2516.023444] Hello Andrew <12>[ 3046.752764] \x01Hello Kay <12>[ 3940.871850] \x01Hello Kay <12>[ 4057.982669] Hello Me <12>[ 4140.452093] Hello Me_2
participants (2)
-
Andrew Morton
-
Joe Perches