Re: [PATCH] Fix broken debug output reserve_region_with_split()

Yinghai Lu
2008-10-17T03:39:55Z

On Thu, Oct 16, 2008 at 8:06 PM, Benjamin Herrenschmidt
<benh@kernel.crashing.org> wrote:
> From: Linus Torvalds <torvalds@linux-foundation.org>
>
> Implement %pR to print struct resource content
>
> Add a %pR option to the kernel vsnprintf that prints the range of
> addresses inside a struct resource passed by pointer.
>
> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> ---
>
> And this one has updated comments.
>
> Index: linux-work/lib/vsprintf.c
> ===================================================================
> --- linux-work.orig/lib/vsprintf.c 2008-10-17 13:30:18.000000000 +1100
> +++ linux-work/lib/vsprintf.c 2008-10-17 14:04:58.000000000 +1100
> @@ -24,6 +24,7 @@
> #include <linux/kernel.h>
> #include <linux/kallsyms.h>
> #include <linux/uaccess.h>
> +#include <linux/ioport.h>
>
> #include <asm/page.h> /* for PAGE_SIZE */
> #include <asm/div64.h>
> @@ -550,18 +551,38 @@ static char *symbol_string(char *buf, ch
> #endif
> }
>
> +static char *resource_string(char *buf, char *end, struct resource *res, int field_width, int precision, int flags)
> +{
> + /* room for the actual numbers, the two "0x", -, [, ] and the final zero */
> + char sym[4*sizeof(resource_size_t) + 8];
> + char *p = sym, *pend = sym + sizeof(sym);
> +
> + *p++ = '[';
> + p = number(p, pend, res->start, 16, -1, -1, SPECIAL | SMALL);
> + *p++ = '-';
> + p = number(p, pend, res->end, 16, -1, -1, SPECIAL | SMALL);
> + *p++ = ']';
> + *p = 0;
> +
> + return string(buf, end, sym, field_width, precision, flags);

so x64 64bit,io ports will be print out 8 digital?

YH