Randy Dunlap | b67ad18 | 2008-11-12 13:26:55 -0800 | [diff] [blame^] | 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> |