Skip to content

Commit

Permalink
vsprintf: add %pR support for IRQ and DMA resources
Browse files Browse the repository at this point in the history
Print addresses (IO port numbers and memory addresses) in hex, but print
others (IRQs and DMA channels) in decimal.  Only print the end if it's
different from the start.

Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
  • Loading branch information
Bjorn Helgaas authored and Jesse Barnes committed Nov 4, 2009
1 parent 2840537 commit c91d337
Showing 1 changed file with 21 additions and 10 deletions.
31 changes: 21 additions & 10 deletions lib/vsprintf.c
Original file line number Diff line number Diff line change
Expand Up @@ -604,26 +604,37 @@ static char *resource_string(char *buf, char *end, struct resource *res,
#ifndef MEM_RSRC_PRINTK_SIZE
#define MEM_RSRC_PRINTK_SIZE 10
#endif
struct printf_spec num_spec = {
struct printf_spec hex_spec = {
.base = 16,
.precision = -1,
.flags = SPECIAL | SMALL | ZEROPAD,
};
/* room for the actual numbers, the two "0x", -, [, ] and the final zero */
char sym[4*sizeof(resource_size_t) + 8];
struct printf_spec dec_spec = {
.base = 10,
.precision = -1,
.flags = 0,
};
/* room for two actual numbers (decimal or hex), the two "0x", -, [, ]
* and the final zero */
char sym[2*3*sizeof(resource_size_t) + 8];
char *p = sym, *pend = sym + sizeof(sym);
int size = -1;
int size = -1, addr = 0;

if (res->flags & IORESOURCE_IO)
if (res->flags & IORESOURCE_IO) {
size = IO_RSRC_PRINTK_SIZE;
else if (res->flags & IORESOURCE_MEM)
addr = 1;
} else if (res->flags & IORESOURCE_MEM) {
size = MEM_RSRC_PRINTK_SIZE;
addr = 1;
}

*p++ = '[';
num_spec.field_width = size;
p = number(p, pend, res->start, num_spec);
*p++ = '-';
p = number(p, pend, res->end, num_spec);
hex_spec.field_width = size;
p = number(p, pend, res->start, addr ? hex_spec : dec_spec);
if (res->start != res->end) {
*p++ = '-';
p = number(p, pend, res->end, addr ? hex_spec : dec_spec);
}
*p++ = ']';
*p = 0;

Expand Down

0 comments on commit c91d337

Please sign in to comment.