diff options
| -rw-r--r-- | Documentation/00-INDEX | 2 | ||||
| -rw-r--r-- | Documentation/printk-formats.txt | 35 |
2 files changed, 37 insertions, 0 deletions
diff --git a/Documentation/00-INDEX b/Documentation/00-INDEX index edef85ce1195..50f99eab0e1f 100644 --- a/Documentation/00-INDEX +++ b/Documentation/00-INDEX | |||
| @@ -290,6 +290,8 @@ powerpc/ | |||
| 290 | - directory with info on using Linux with the PowerPC. | 290 | - directory with info on using Linux with the PowerPC. |
| 291 | preempt-locking.txt | 291 | preempt-locking.txt |
| 292 | - info on locking under a preemptive kernel. | 292 | - info on locking under a preemptive kernel. |
| 293 | printk-formats.txt | ||
| 294 | - how to get printk format specifiers right | ||
| 293 | prio_tree.txt | 295 | prio_tree.txt |
| 294 | - info on radix-priority-search-tree use for indexing vmas. | 296 | - info on radix-priority-search-tree use for indexing vmas. |
| 295 | ramdisk.txt | 297 | ramdisk.txt |
diff --git a/Documentation/printk-formats.txt b/Documentation/printk-formats.txt new file mode 100644 index 000000000000..1b5a5ddbc3ef --- /dev/null +++ b/Documentation/printk-formats.txt | |||
| @@ -0,0 +1,35 @@ | |||
| 1 | If variable is of Type, use printk format specifier: | ||
| 2 | --------------------------------------------------------- | ||
| 3 | int %d or %x | ||
| 4 | unsigned int %u or %x | ||
| 5 | long %ld or %lx | ||
| 6 | unsigned long %lu or %lx | ||
| 7 | long long %lld or %llx | ||
| 8 | unsigned long long %llu or %llx | ||
| 9 | size_t %zu or %zx | ||
| 10 | ssize_t %zd or %zx | ||
| 11 | |||
| 12 | Raw pointer value SHOULD be printed with %p. | ||
| 13 | |||
| 14 | u64 SHOULD be printed with %llu/%llx, (unsigned long long): | ||
| 15 | |||
| 16 | printk("%llu", (unsigned long long)u64_var); | ||
| 17 | |||
| 18 | s64 SHOULD be printed with %lld/%llx, (long long): | ||
| 19 | |||
| 20 | printk("%lld", (long long)s64_var); | ||
| 21 | |||
| 22 | If <type> is dependent on a config option for its size (e.g., sector_t, | ||
| 23 | blkcnt_t, phys_addr_t, resource_size_t) or is architecture-dependent | ||
| 24 | for its size (e.g., tcflag_t), use a format specifier of its largest | ||
| 25 | possible type and explicitly cast to it. Example: | ||
| 26 | |||
| 27 | printk("test: sector number/total blocks: %llu/%llu\n", | ||
| 28 | (unsigned long long)sector, (unsigned long long)blockcount); | ||
| 29 | |||
| 30 | Reminder: sizeof() result is of type size_t. | ||
| 31 | |||
| 32 | Thank you for your cooperation and attention. | ||
| 33 | |||
| 34 | |||
| 35 | By Randy Dunlap <rdunlap@xenotime.net> | ||
