Skip to contentSkip to conversation

lib/vsnprintf: Add %par specifier for sake of consistency

PATCH Superseded Andy Shevchenko 1 participant 2 messages Dec 1, 2016 – Dec 27, 2016

Subsystems (3)

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore

Andy Shevchenko

author reviewer
#0 lore raw

PATCH 1/1 lib/vsnprintf: Add %par specifier for sake of consistency

While resource_size_t is repeating phys_addr_t, allocate %par specifier for that type for sake of consistency.

---
 Documentation/printk-formats.txt | 13 ++++++++++---
 lib/vsprintf.c                   | 11 +++++++++--
 2 files changed, 19 insertions(+), 5 deletions(-)
Documentation/printk-formats.txt +10 -3
index 5962949..d8c40c3 100644
@@ -79,9 +79,16 @@ Physical addresses types phys_addr_t:
 
 	%pa[p]	0x01234567 or 0x0123456789abcdef
 
-	For printing a phys_addr_t type (and its derivatives, such as
-	resource_size_t) which can vary based on build options, regardless of
-	the width of the CPU data path. Passed by reference.
+	For printing a phys_addr_t type which can vary based on build options,
+	regardless of the width of the CPU data path. Passed by reference.
+
+Resource size types resource_size_t:
+
+	%par	0x01234567 or 0x0123456789abcdef
+
+	For printing a resource_size_t type which can vary based on build
+	options, regardless of the width of the CPU data path. Passed by
+	reference.
 
 DMA addresses types dma_addr_t:
 
lib/vsprintf.c +9 -2
index 0967771..c89c57d 100644
@@ -1373,6 +1373,10 @@ char *address_val(char *buf, char *end, const void *addr, const char *fmt)
 		num = *(const dma_addr_t *)addr;
 		size = sizeof(dma_addr_t);
 		break;
+	case 'r':
+		num = *(const resource_size_t *)addr;
+		size = sizeof(resource_size_t);
+		break;
 	case 'p':
 	default:
 		num = *(const phys_addr_t *)addr;
@@ -1548,8 +1552,11 @@ int kptr_restrict __read_mostly;
  *              N no separator
  *            The maximum supported length is 64 bytes of the input. Consider
  *            to use print_hex_dump() for the larger input.
- * - 'a[pd]' For address types [p] phys_addr_t, [d] dma_addr_t and derivatives
- *           (default assumed to be phys_addr_t, passed by reference)
+ * - 'a[dpr]' For address types (default assumed to be phys_addr_t, passed by
+ *            reference):
+ *            [d] dma_addr_t
+ *            [p] phys_addr_t
+ *            [r] resource_size_t
  * - 'd[234]' For a dentry name (optionally 2-4 last components)
  * - 'D[234]' Same as 'd' but for a struct file
  * - 'g' For block_device name (gendisk + partition number)
Signature · 1 line
2.10.2
author reviewer
#1 lore raw
Quoted 3 lines · Andy Shevchenko

While resource_size_t is repeating phys_addr_t, allocate %par specifier for
that type for sake of consistency.

Does it make sense to anyone?

Quoted 70 lines

---
 Documentation/printk-formats.txt | 13 ++++++++++--- lib/vsprintf.c                   | 11 +++++++++--

 2 files changed, 19 insertions(+), 5 deletions(-)
Documentation/printk- renamed from Documentation/printk-formats.txt +0 -0

formats.txt
index 5962949..d8c40c3 100644

Documentation/printk-formats.txt +0 -0
@@ -79,9 +79,16 @@ Physical addresses types phys_addr_t:


  %pa[p] 0x01234567 or 0x0123456789abcdef

Documentation/printk-formats.txt +0 -2
-	For printing a phys_addr_t type (and its derivatives, such as
-	resource_size_t) which can vary based on build options,

regardless of

Documentation/printk-formats.txt +1 -1
-	the width of the CPU data path. Passed by reference.
+	For printing a phys_addr_t type which can vary based on build

options,

Documentation/printk-formats.txt +1 -0
+	regardless of the width of the CPU data path. Passed by

reference.

Documentation/printk-formats.txt +6 -0
+
+Resource size types resource_size_t:
+
+	%par	0x01234567 or 0x0123456789abcdef
+
+	For printing a resource_size_t type which can vary based on

build

Documentation/printk-formats.txt +1 -0
+	options, regardless of the width of the CPU data path. Passed

by

Documentation/printk-formats.txt +1 -0
+	reference.


 DMA addresses types dma_addr_t:

lib/vsprintf.c +4 -0
index 0967771..c89c57d 100644
@@ -1373,6 +1373,10 @@ char *address_val(char *buf, char *end, const
 void *addr, const char *fmt)
  		num = *(const dma_addr_t *)addr;
  		size = sizeof(dma_addr_t);
  		break;
+	case 'r':
+		num = *(const resource_size_t *)addr;
+		size = sizeof(resource_size_t);
+		break;

  case 'p':
  default:
  num = *(const phys_addr_t *)addr;

lib/vsprintf.c +0 -0
@@ -1548,8 +1552,11 @@ int kptr_restrict __read_mostly;
   *              N no separator
   *            The maximum supported length is 64 bytes of the input.

Consider
  *            to use print_hex_dump() for the larger input.
- * - 'a[pd]' For address types [p] phys_addr_t, [d] dma_addr_t and derivatives
- *           (default assumed to be phys_addr_t, passed by reference)
+ * - 'a[dpr]' For address types (default assumed to be phys_addr_t, passed by
+ *            reference):
+ *            [d] dma_addr_t
+ *            [p] phys_addr_t
+ *            [r] resource_size_t
  * - 'd[234]' For a dentry name (optionally 2-4 last components)
  * - 'D[234]' Same as 'd' but for a struct file
  * - 'g' For block_device name (gendisk + partition number)

Signature · 2 lines
Andy Shevchenko <[email protected]>
Intel Finland Oy