1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199
|
.. 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 %u, %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.
|