Table of Contents
printk()
feeds kernel messages to the
console, dmesg, and the syslog daemon. It is useful for debugging
and reporting errors, and can be used inside interrupt context,
but use with caution: a machine which has its console flooded with
printk messages is unusable. It uses a format string mostly
compatible with ANSI C printf, and C string concatenation to give
it a first "priority" argument:
printk(KERN_INFO "i = %u\n", i);
See include/linux/kernel.h
;
for other KERN_ values; these are interpreted by syslog as the
level. Special case: for printing an IP address use
__u32 ipaddress; printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress));
printk()
internally uses a 1K buffer and does
not catch overruns. Make sure that will be enough.
You will know when you are a real kernel hacker when you start typoing printf as printk in your user programs :)
Another sidenote: the original Unix Version 6 sources had a comment on top of its printf function: "Printf should not be used for chit-chat". You should follow that advice.