Commit 5e4ee7b1 authored by Martin Kletzander's avatar Martin Kletzander Committed by Linus Torvalds

printk: synchronize %p formatting documentation

Move all pointer-formatting documentation to one place in the code and one
place in the documentation instead of keeping it in three places with
different level of completeness.  Documentation/printk-formats.txt has
detailed information about each modifier, docstring above pointer() has
short descriptions of them (as that is the function dealing with %p) and
docstring above vsprintf() is removed as redundant.  Both docstrings in
the code that were modified are updated with a reminder of updating the
documentation upon any further change.

[akpm@linux-foundation.org: fix comment]
Signed-off-by: default avatarMartin Kletzander <mkletzan@redhat.com>
Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Cc: Jonathan Corbet <corbet@lwn.net>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 3e406b1d
...@@ -119,6 +119,7 @@ Raw buffer as an escaped string: ...@@ -119,6 +119,7 @@ Raw buffer as an escaped string:
If field width is omitted the 1 byte only will be escaped. If field width is omitted the 1 byte only will be escaped.
Raw buffer as a hex string: Raw buffer as a hex string:
%*ph 00 01 02 ... 3f %*ph 00 01 02 ... 3f
%*phC 00:01:02: ... :3f %*phC 00:01:02: ... :3f
%*phD 00-01-02- ... -3f %*phD 00-01-02- ... -3f
...@@ -234,6 +235,7 @@ UUID/GUID addresses: ...@@ -234,6 +235,7 @@ UUID/GUID addresses:
Passed by reference. Passed by reference.
dentry names: dentry names:
%pd{,2,3,4} %pd{,2,3,4}
%pD{,2,3,4} %pD{,2,3,4}
...@@ -256,6 +258,8 @@ struct va_format: ...@@ -256,6 +258,8 @@ struct va_format:
va_list *va; va_list *va;
}; };
Implements a "recursive vsnprintf".
Do not use this feature without some mechanism to verify the Do not use this feature without some mechanism to verify the
correctness of the format string and va_list arguments. correctness of the format string and va_list arguments.
...@@ -284,6 +288,31 @@ bitmap and its derivatives such as cpumask and nodemask: ...@@ -284,6 +288,31 @@ bitmap and its derivatives such as cpumask and nodemask:
Passed by reference. Passed by reference.
Network device features:
%pNF 0x000000000000c000
For printing netdev_features_t.
Passed by reference.
Command from struct task_struct
%pT ls
For printing executable name excluding path from struct
task_struct.
Passed by reference.
Ignored argument:
%n %n
The argument passed will be ignored. In other words, literal "%n" will
be in the output and the argument will be considered for next format
specifier.
Thank you for your cooperation and attention. Thank you for your cooperation and attention.
......
...@@ -1448,6 +1448,9 @@ int kptr_restrict __read_mostly; ...@@ -1448,6 +1448,9 @@ int kptr_restrict __read_mostly;
* - 'Cn' For a clock, it prints the name (Common Clock Framework) or address * - 'Cn' For a clock, it prints the name (Common Clock Framework) or address
* (legacy clock framework) of the clock * (legacy clock framework) of the clock
* - 'Cr' For a clock, it prints the current rate of the clock * - 'Cr' For a clock, it prints the current rate of the clock
* - 'n' For ignored argument
*
* ** Please update also Documentation/printk-formats.txt when making changes **
* *
* Note: The difference between 'S' and 'F' is that on ia64 and ppc64 * Note: The difference between 'S' and 'F' is that on ia64 and ppc64
* function pointers are really function descriptors, which contain a * function pointers are really function descriptors, which contain a
...@@ -1812,40 +1815,13 @@ int format_decode(const char *fmt, struct printf_spec *spec) ...@@ -1812,40 +1815,13 @@ int format_decode(const char *fmt, struct printf_spec *spec)
* @args: Arguments for the format string * @args: Arguments for the format string
* *
* This function follows C99 vsnprintf, but has some extensions: * This function follows C99 vsnprintf, but has some extensions:
* %pS output the name of a text symbol with offset
* %ps output the name of a text symbol without offset
* %pF output the name of a function pointer with its offset
* %pf output the name of a function pointer without its offset
* %pB output the name of a backtrace symbol with its offset
* %pR output the address range in a struct resource with decoded flags
* %pr output the address range in a struct resource with raw flags
* %pb output the bitmap with field width as the number of bits
* %pbl output the bitmap as range list with field width as the number of bits
* %pM output a 6-byte MAC address with colons
* %pMR output a 6-byte MAC address with colons in reversed order
* %pMF output a 6-byte MAC address with dashes
* %pm output a 6-byte MAC address without colons
* %pmR output a 6-byte MAC address without colons in reversed order
* %pI4 print an IPv4 address without leading zeros
* %pi4 print an IPv4 address with leading zeros
* %pI6 print an IPv6 address with colons
* %pi6 print an IPv6 address without colons
* %pI6c print an IPv6 address as specified by RFC 5952
* %pIS depending on sa_family of 'struct sockaddr *' print IPv4/IPv6 address
* %piS depending on sa_family of 'struct sockaddr *' print IPv4/IPv6 address
* %pU[bBlL] print a UUID/GUID in big or little endian using lower or upper
* case.
* %*pE[achnops] print an escaped buffer
* %*ph[CDN] a variable-length hex string with a separator (supports up to 64
* bytes of the input)
* %pC output the name (Common Clock Framework) or address (legacy clock
* framework) of a clock
* %pCn output the name (Common Clock Framework) or address (legacy clock
* framework) of a clock
* %pCr output the current rate of a clock
* %n is ignored * %n is ignored
* %p* is handled by pointer()
*
* See pointer() or Documentation/printk-formats.txt for more
* extensive description.
* *
* ** Please update Documentation/printk-formats.txt when making changes ** * ** Please update the documentation in both places when making changes **
* *
* The return value is the number of characters which would * The return value is the number of characters which would
* be generated for the given input, excluding the trailing * be generated for the given input, excluding the trailing
......
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