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