printk or pr_<level>?

Arlie Stephens arlie at worldash.org
Wed Jul 23 17:45:05 EDT 2014


On Jul 23 2014, Kristofer Hallin wrote:

> 1. No. Depending on what subsystem your are printing logs from you
> should use different functions for logging. In the networking
> subsystem netdev_dbg is suitable and so on. Otherwise pr_debug will
> always work and is always preferred over printk.

Why?  

No snark intended here, just confused curiousity. 

It would seem to me that one common method of printing would be better
than a different one for each subsystem, each needing to be
individually remembered, and potentially having its own
bugs\b\b\b\bquirks. 

The kernel is complex enough, without adding uneeded extra.



And yes, this begs the question of why you want to print messages
from the kernel, whether they ought to be conditional and/or rate
limited, etc. etc.   Clearly the recommendation of pr_debug() suggests
someone thinks they should be at least somewhat conditional...

> 
> 2. Use pr_debug.
> 
> On Wed, Jul 23, 2014 at 8:16 PM, Raphael Silva
> <raphaelcampos.rp at gmail.com> wrote:
> > Hello guys,
> >
> > 1)
> > If I use printk(KERN_<LEVEL>...) the checkpatch warns me:
> > WARNING: Prefer [subsystem eg: netdev]_dbg([subsystem]dev, ... then
> > dev_dbg(dev, ... then pr_debug(...  to printk(KERN_DEBUG ...
> >
> > So, pr_devel() is the correct way to print a debug level msg?
> >
> > 2)
> > if pr_<level> is the correct way, what about KERN_DEFAULT ?
> >
> > If I don't put the kern_level (printk("Hello");)
> > WARNING: printk() should include KERN_ facility level
> >
> > if I put KERN_DEFAULT:
> > WARNING: Prefer [subsystem eg: netdev]_default([subsystem]dev, ... then
> > dev_default(dev, ... then pr_default(...  to printk(KERN_DEFAULT ...
> >
> > But for KERN_DEFAULT, there isn't a macro pr_<level> like pr_devel().
> >
> > Can anyone show me the correct way?
> >
> > tks

-- 
Arlie

(Arlie Stephens					arlie at worldash.org)



More information about the Kernelnewbies mailing list