
Heinrich,
Thank you for additional work.
On Wed, Jan 19, 2022 at 01:23:00AM +0100, Heinrich Schuchardt wrote:
Document the format specifier codes used by U-Boot's printf() implementation.
Signed-off-by: Heinrich Schuchardt heinrich.schuchardt@canonical.com
doc/develop/index.rst | 1 + doc/develop/printf.rst | 132 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 133 insertions(+) create mode 100644 doc/develop/printf.rst
diff --git a/doc/develop/index.rst b/doc/develop/index.rst index 9592d193fc..c84b10ea88 100644 --- a/doc/develop/index.rst +++ b/doc/develop/index.rst @@ -21,6 +21,7 @@ Implementation logging makefiles menus
- printf uefi/index version
diff --git a/doc/develop/printf.rst b/doc/develop/printf.rst new file mode 100644 index 0000000000..6a1266618e --- /dev/null +++ b/doc/develop/printf.rst @@ -0,0 +1,132 @@ +.. SPDX-License-Identifier: GPL-2.0+
+Printf() format codes +=====================
+Integer types +-------------
+Integer qualifiers +''''''''''''''''''
+Inter qualifers describe how integer types are passed as arguments.
+no specifier
- int (used for bool, enum, short, int)
+%h
- int, consider only the low 16 bits
low -> lower? (think of the opposite, "upper" or "higher")
+%l
- long
+%ll, %L
- long long
+%t
- ptr_diff_t
ptrdiff_t
+%z, %Z
- size_t, ssize_t
+Format specifiers +'''''''''''''''''
+Format specifiers control the output.
+%d
- signed decimal
+%u
- unsigned decimal
+%x
- lower case hexadecimal
+%X
- upper case hexadecimal
+The following tables shows the correct combinations of qulifiers and specifiers +for the individual integer types.
+=================== ===================== +Type Format specifier +=================== ===================== +bool %d, %x +char %d, %x
and %X?
+unsigned char %u, %x +short %d, %x +unsigned short %u, %x +int %d, %x +unsigned int %d, %x +long %ld, %lx +unsigned long %lu, %lx +long long %lld, %llx +unsigned long long %llu, %llx +off_t %llu, %llx +ptr_diff_t %td, %tx +fdt_addr_t %pa, see pointers
Does "see pointers" refer to "Pointer" section? There is no further description about fdt_[addr|size]_t there.
+fdt_size_t %pa, see pointers +phys_addr_t %pa, see pointers +phys_size_t %pa, see pointers +size_t %zu, %zx, %Zu, %Zx +ssize_t %zd, %zx, %Zd, %Zx +=================== =====================
For completeness, we might better address padding (space, '0') justification ('+', '-') and '#' as well.
+Characters +----------
+%c
prints a single character
+Strings +-------
+%s
prints a UTF-8 string (char \*)
may drop "a" for consistency in below cases
drop ''
+%ls
prints a UTF-16 string (u16 \*)
+Pointers +--------
+%p
prints the address the pointer points to hexadecimally
+%pa, %pap
prints the value of a phys_addr_t value that the pointer points to
preceded with 0x and zero padding according to size of phys_addr_t
+%pD
prints an UEFI device path
an -> a, or drop it.
+%pi4, %pI4
prints IPv4 address, e.g. '192.168.0.1'
+%pm
prints MAC address without separators, e.g. '001122334455'
+%pM
print MAC address colon separated, e.g. '00:01:02:03:04:05'
+%pUb
prints GUID big endian, lower case
e.g. '00112233-4455-6677-8899-aabbccddeeff'
+%pUB
prints GUID big endian, upper case
e.g. '00112233-4455-6677-8899-AABBCCDDEEFF'
+%pUl
prints GUID low endian, lower case
low -> little
e.g. '33221100-5544-7766-8899-aabbccddeeff'
+%pUL
prints GUID low endian, upper case
ditto
e.g. '33221100-5544-7766-8899-AABBCCDDEEFF'
+%pUs
prints text description of a GUID or if such is not known low endian,
ditto
-Takahiro Akashi
lower case, e.g. 'system' for a GUID identifying an EFI system
- partition.
-- 2.33.1