mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-03 21:48:15 +00:00 
			
		
		
		
	Document the format specifier codes used by U-Boot's printf() implementation. Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
		
			
				
	
	
		
			200 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			200 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
.. SPDX-License-Identifier: GPL-2.0+
 | 
						|
 | 
						|
Printf() format codes
 | 
						|
=====================
 | 
						|
 | 
						|
Each conversion specification consists of:
 | 
						|
 | 
						|
* leading '%' character
 | 
						|
* zero or more flags
 | 
						|
* an optional minimum field width
 | 
						|
* an optional precision field preceded by '.'
 | 
						|
* an optional length modifier
 | 
						|
* a conversion specifier
 | 
						|
 | 
						|
Flags
 | 
						|
-----
 | 
						|
 | 
						|
'space'
 | 
						|
	fill up with spaces to reach the specified length
 | 
						|
 | 
						|
\-
 | 
						|
	left justify
 | 
						|
 | 
						|
\+
 | 
						|
	add sign field of decimal conversion
 | 
						|
 | 
						|
#
 | 
						|
	convert to alternative form
 | 
						|
 | 
						|
	* prepend 0 to octal output
 | 
						|
	* ignored for decimal output
 | 
						|
	* prepend 0X to hexadecimal output
 | 
						|
 | 
						|
0
 | 
						|
	fill up with zeroes to reach the specified length
 | 
						|
 | 
						|
 | 
						|
Integer types
 | 
						|
-------------
 | 
						|
 | 
						|
Length modifiers
 | 
						|
''''''''''''''''
 | 
						|
 | 
						|
The optional length modifier specifies the size of the argument.
 | 
						|
 | 
						|
no modifier
 | 
						|
	bool, enum, short, int are passed as int
 | 
						|
 | 
						|
%h
 | 
						|
	convert to (unsigned) short before printing.
 | 
						|
	Only the low 16 bits are printed.
 | 
						|
 | 
						|
%hh
 | 
						|
	**not implemented**
 | 
						|
 | 
						|
%j
 | 
						|
	**not implemented**
 | 
						|
 | 
						|
%l
 | 
						|
	long
 | 
						|
 | 
						|
%ll, %L
 | 
						|
	long long
 | 
						|
 | 
						|
%t
 | 
						|
	ptr_diff_t
 | 
						|
 | 
						|
%z, %Z
 | 
						|
	size_t, ssize_t
 | 
						|
 | 
						|
Conversion specifiers
 | 
						|
'''''''''''''''''''''
 | 
						|
 | 
						|
Conversion specifiers control the output.
 | 
						|
 | 
						|
%d
 | 
						|
	signed decimal
 | 
						|
 | 
						|
%u
 | 
						|
	unsigned decimal
 | 
						|
 | 
						|
%o
 | 
						|
	unsigned octal
 | 
						|
 | 
						|
%x
 | 
						|
	unsigned lower case hexadecimal
 | 
						|
 | 
						|
%X
 | 
						|
	unsigned upper case hexadecimal
 | 
						|
 | 
						|
The floating point conversion specifiers are not implemented:
 | 
						|
 | 
						|
* %a
 | 
						|
* %A
 | 
						|
* %e
 | 
						|
* %E
 | 
						|
* %f
 | 
						|
* %F
 | 
						|
* %g
 | 
						|
* %G
 | 
						|
 | 
						|
The following tables shows the correct combinations of modifiers and specifiers
 | 
						|
for the individual integer types.
 | 
						|
 | 
						|
=================== ==================
 | 
						|
Type                Format specifier
 | 
						|
=================== ==================
 | 
						|
bool		    %d, %x
 | 
						|
char                %d, %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
 | 
						|
fdt_size_t          %pa, see pointers
 | 
						|
phys_addr_t         %pa, see pointers
 | 
						|
phys_size_t         %pa, see pointers
 | 
						|
resource_size_t     %pa, see pointers
 | 
						|
size_t              %zu, %zx, %zX
 | 
						|
ssize_t             %zd, %zx, %zX
 | 
						|
=================== ==================
 | 
						|
 | 
						|
Characters
 | 
						|
----------
 | 
						|
 | 
						|
%%
 | 
						|
	a '%' character is written
 | 
						|
 | 
						|
%c
 | 
						|
        prints a single character
 | 
						|
 | 
						|
%lc
 | 
						|
	**not implemented**
 | 
						|
 | 
						|
Strings
 | 
						|
-------
 | 
						|
 | 
						|
%s
 | 
						|
        prints a UTF-8 string (char \*)
 | 
						|
 | 
						|
%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 the size of phys_addr_t.
 | 
						|
	The following types should be printed this way:
 | 
						|
 | 
						|
	* fdt_addr_t
 | 
						|
	* fdt_size_t
 | 
						|
	* phys_addr_t
 | 
						|
	* phys_size_t
 | 
						|
	* resource_size_t
 | 
						|
 | 
						|
%pD
 | 
						|
        prints a UEFI device path
 | 
						|
 | 
						|
%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 little endian, lower case
 | 
						|
        e.g. '33221100-5544-7766-8899-aabbccddeeff'
 | 
						|
 | 
						|
%pUL
 | 
						|
        prints GUID little endian, upper case
 | 
						|
        e.g. '33221100-5544-7766-8899-AABBCCDDEEFF'
 | 
						|
 | 
						|
%pUs
 | 
						|
        prints text description of a GUID or if such is not known little endian,
 | 
						|
        lower case, e.g. 'system' for a GUID identifying an EFI system
 | 
						|
	partition.
 |