[PATCH 1/1] doc: printf() codes

AKASHI Takahiro takahiro.akashi at linaro.org
Wed Jan 19 04:09:17 CET 2022


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 at 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
> 


More information about the U-Boot mailing list