Messages in this thread | | | Date | Wed, 5 Nov 2008 10:23:35 -0800 | From | Randy Dunlap <> | Subject | Re: How do I printk <type> correctly? |
| |
On Thu, 23 Oct 2008 15:41:33 +0400 Alexey Dobriyan wrote:
> If variable is of Type use printk format specifier. > --------------------------------------------------------- > int %d or %x > unsigned int %u or %x > long %ld ot %lx > unsigned long %lu or %lx > long long %lld or %llx > unsigned long long %llu or %llx > size_t %zu or %zx > ssize_t %zd or %zx
Add, or is this one too infrequent to be listed here?
tcflag_t %lu or %lx or %lo
Since tcflag_t is unsigned int (on most $ARCH-es) or unsigned long (on sparc32), use a cast to (unsigned long)flag when printing it.
[Yes, a sparc32 build gets lots of printk format warnings when printing tcflag_t values.]
> Raw pointer value SHOULD be printed with %p. > > u64 SHOULD be printed with %llu/%llx, (unsigned long long): > > printk("%llu", (unsigned long long)u64_var); > > s64 SHOULD be printed with %lld/%llx, (long long): > > printk("%lld", (long long)s64_var); > > If type is dependent on config option (sector_t), use format specifier > of biggest type and explicitly cast to it. > > Reminder: sizeof() result is of type size_t. > > Thank you for your cooperation. > --
--- ~Randy
| |