[alsa-devel] [PATCH] ALSA: get rid of CONFIG_SND_VERBOSE_PRINTK
Takashi Iwai
tiwai at suse.de
Wed Jun 5 08:04:59 CEST 2013
At Tue, 4 Jun 2013 16:54:12 -0400 (EDT),
Alan Stern wrote:
>
> On Tue, 4 Jun 2013, Joe Perches wrote:
>
> > A somewhat common convention is to use
> >
> > prefix_dbg(level, fmt, ...)
> >
> > where level is either a numeric value or bitmask,
> > and also is either a #define or a MODULE_PARAM
> >
> > today sound/misc.c has:
> >
> > ------------------------------------------
> >
> > #ifdef CONFIG_SND_DEBUG
> >
> > #ifdef CONFIG_SND_DEBUG_VERBOSE
> > #define DEFAULT_DEBUG_LEVEL 2
> > #else
> > #define DEFAULT_DEBUG_LEVEL 1
> > #endif
> >
> > static int debug = DEFAULT_DEBUG_LEVEL;
> > module_param(debug, int, 0644);
> > MODULE_PARM_DESC(debug, "Debug level (0 = disable)");
> >
> > #endif /* CONFIG_SND_DEBUG */
>
> Yes, I have read this part of the code.
>
> > ------------------------------------------
> >
> > I suggest converting all the remaining
> >
> > snd_printd(...) to snd_dbg(1, ...)
> > and
> > snd_printdd(...) to snd_dbg(2, ...)
> >
> > so that debug module param control can be used for
> > all these and if the DEFAULT_DEBUG_LEVEL isn't
> > high enough, the various snd_dbg(2, ...) can be
> > completely optimized away if appropriate.
>
> I don't see how DEFAULT_DEBUG_LEVEL can be used to optimize away
> anything. The user can always change the value of the "debug" module
> parameter while the system is running. The only valid opportunity for
> optimization would be if CONFIG_SND_DEBUG was disabled; then all these
> messages would disappear.
>
> You didn't respond to the first point I raised. Since these messages
> are all meant for debugging, there's no point allowing them to have
> prefixes like KERN_ERR or KERN_INFO. They should always be printed at
> the KERN_DEBUG level. Or did you think this was so obviously true that
> it didn't require any comment?
Unfortunately, it's not so straightforward. Many messages are better
with KERN_INFO indeed. In such places, snd_printd() is used rather as
snd_chattier_printk_with_prefix().
This comes from the subsystem development history. In the era of 2.4
kernels, many systems did load/unload the module frequently on demand.
Thus we didn't want to put a message from driver at each module probe
or removal. Otherwise dmesg will be flood of such messages at each
time you play a WAV song or ring a beep via PCM.
Instead, we tended to put such informational messages as snd_printd(),
while keeping the driver itself reticent as much as possible for
"productive" systems. This style was kept for a while even after
merged to 2.5 kernels until recently.
Also, some places use KERN_WARNING or KERN_ERR with snd_printd(),
mostly because they are in the context with CONFIG_SND_DEBUG.
They can be well pr_warning() or pr_err().
Last but not least, as mentioned in the reply to patch 1/2, many
messages miss proper prefixes.
These are the main reasons I stated that systematic replacements would
be difficult. We need to take a look through the whole snd_print*()
and replace appropriately case by case...
thanks,
Takashi
More information about the Alsa-devel
mailing list