2022-01-19 00:20:45 +00:00
|
|
|
.. 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
|
|
|
|
=================== ==================
|
2023-08-14 04:53:48 +00:00
|
|
|
bool %d, %x
|
2022-01-19 00:20:45 +00:00
|
|
|
char %d, %x
|
|
|
|
unsigned char %u, %x
|
|
|
|
short %d, %x
|
|
|
|
unsigned short %u, %x
|
|
|
|
int %d, %x
|
2023-08-14 04:53:48 +00:00
|
|
|
unsigned int %u, %x
|
2022-01-19 00:20:45 +00:00
|
|
|
long %ld, %lx
|
|
|
|
unsigned long %lu, %lx
|
|
|
|
long long %lld, %llx
|
|
|
|
unsigned long long %llu, %llx
|
|
|
|
off_t %llu, %llx
|
2023-08-14 04:53:48 +00:00
|
|
|
ptr_diff_t %td, %tx
|
2022-01-19 00:20:45 +00:00
|
|
|
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.
|