1If 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 12Raw pointer value SHOULD be printed with %p. 13 14u64 SHOULD be printed with %llu/%llx, (unsigned long long): 15 16 printk("%llu", (unsigned long long)u64_var); 17 18s64 SHOULD be printed with %lld/%llx, (long long): 19 20 printk("%lld", (long long)s64_var); 21 22If <type> is dependent on a config option for its size (e.g., sector_t, 23blkcnt_t, phys_addr_t, resource_size_t) or is architecture-dependent 24for its size (e.g., tcflag_t), use a format specifier of its largest 25possible 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 30Reminder: sizeof() result is of type size_t. 31 32Thank you for your cooperation and attention. 33 34 35By Randy Dunlap <rdunlap@xenotime.net> 36