All new accounts created on Gitlab now require administrator approval. If you invite any collaborators, please let Flux staff know so they can approve the accounts.

Commit dd45c9cf authored by Harvey Harrison's avatar Harvey Harrison Committed by David S. Miller

printk: add %pM format specifier for MAC addresses

Add format specifiers for printing out six colon-separated bytes:

MAC addresses (%pM):

%#pM is also supported and omits the colon separators.
Signed-off-by: default avatarHarvey Harrison <>
Signed-off-by: default avatarDavid S. Miller <>
parent 1080d709
......@@ -581,6 +581,23 @@ static char *resource_string(char *buf, char *end, struct resource *res, int fie
return string(buf, end, sym, field_width, precision, flags);
static char *mac_address_string(char *buf, char *end, u8 *addr, int field_width,
int precision, int flags)
char mac_addr[6 * 3]; /* (6 * 2 hex digits), 5 colons and trailing zero */
char *p = mac_addr;
int i;
for (i = 0; i < 6; i++) {
p = pack_hex_byte(p, addr[i]);
if (!(flags & SPECIAL) && i != 5)
*p++ = ':';
*p = '\0';
return string(buf, end, mac_addr, field_width, precision, flags & ~SPECIAL);
* Show a '%p' thing. A kernel extension is that the '%p' is followed
* by an extra set of alphanumeric characters that are extended format
......@@ -592,6 +609,8 @@ static char *resource_string(char *buf, char *end, struct resource *res, int fie
* - 'S' For symbolic direct pointers
* - 'R' For a struct resource pointer, it prints the range of
* addresses (not the name nor the flags)
* - 'M' For a 6-byte MAC address, it prints the address in the
* usual colon-separated hex notation
* Note: The difference between 'S' and 'F' is that on ia64 and ppc64
* function pointers are really function descriptors, which contain a
......@@ -607,6 +626,8 @@ static char *pointer(const char *fmt, char *buf, char *end, void *ptr, int field
return symbol_string(buf, end, ptr, field_width, precision, flags);
case 'R':
return resource_string(buf, end, ptr, field_width, precision, flags);
case 'M':
return mac_address_string(buf, end, ptr, field_width, precision, flags);
flags |= SMALL;
if (field_width == -1) {
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment