Re: printk regression?

From: Linus Torvalds
Date: Thu Jul 02 2009 - 00:29:39 EST




On Wed, 1 Jul 2009, Linus Torvalds wrote:
>
> Same goes for the insane binary printing crap. How about just making it
> sane?

Untested.

Note the comment. I kept it doing the insane thing (print out bit#0 as the
first bit), but do wonder if that's really what you want. Normally, you
print the least-significant-bit right-most.

Linus
---
arch/x86/kernel/apic/io_apic.c | 17 ++++++++++-------
1 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index 4d0216f..cf52a29 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -1724,16 +1724,19 @@ __apicdebuginit(void) print_APIC_bitfield(int base)
if (apic_verbosity == APIC_QUIET)
return;

- printk(KERN_DEBUG "0123456789abcdef0123456789abcdef\n" KERN_DEBUG);
+ printk(KERN_DEBUG "0123456789abcdef0123456789abcdef\n");
for (i = 0; i < 8; i++) {
+ char bin[33];
v = apic_read(base + i*0x10);
+
+ /* Do we really want to print out LSB first? */
for (j = 0; j < 32; j++) {
- if (v & (1<<j))
- printk("1");
- else
- printk("0");
+ bin[j] = '0' + (v&1);
+ v >>= 1;
}
- printk("\n");
+ bin[32] = 0;
+
+ printk(KERN_DEBUG "%s\n", bin);
}
}

@@ -1745,7 +1748,7 @@ __apicdebuginit(void) print_local_APIC(void *dummy)
if (apic_verbosity == APIC_QUIET)
return;

- printk("\n" KERN_DEBUG "printing local APIC contents on CPU#%d/%d:\n",
+ printk(KERN_DEBUG "printing local APIC contents on CPU#%d/%d:\n",
smp_processor_id(), hard_smp_processor_id());
v = apic_read(APIC_ID);
printk(KERN_INFO "... APIC ID: %08x (%01x)\n", v, read_apic_id());
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/