123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- .. 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.
|