Skip to content
  • Jason Baron's avatar
    driver core: basic infrastructure for per-module dynamic debug messages · 346e15be
    Jason Baron authored
    
    
    Base infrastructure to enable per-module debug messages.
    
    I've introduced CONFIG_DYNAMIC_PRINTK_DEBUG, which when enabled centralizes
    control of debugging statements on a per-module basis in one /proc file,
    currently, <debugfs>/dynamic_printk/modules. When, CONFIG_DYNAMIC_PRINTK_DEBUG,
    is not set, debugging statements can still be enabled as before, often by
    defining 'DEBUG' for the proper compilation unit. Thus, this patch set has no
    affect when CONFIG_DYNAMIC_PRINTK_DEBUG is not set.
    
    The infrastructure currently ties into all pr_debug() and dev_dbg() calls. That
    is, if CONFIG_DYNAMIC_PRINTK_DEBUG is set, all pr_debug() and dev_dbg() calls
    can be dynamically enabled/disabled on a per-module basis.
    
    Future plans include extending this functionality to subsystems, that define 
    their own debug levels and flags.
    
    Usage:
    
    Dynamic debugging is controlled by the debugfs file, 
    <debugfs>/dynamic_printk/modules. This file contains a list of the modules that
    can be enabled. The format of the file is as follows:
    
    	<module_name> <enabled=0/1>
    		.
    		.
    		.
    
    	<module_name> : Name of the module in which the debug call resides
    	<enabled=0/1> : whether the messages are enabled or not
    
    For example:
    
    	snd_hda_intel enabled=0
    	fixup enabled=1
    	driver enabled=0
    
    Enable a module:
    
    	$echo "set enabled=1 <module_name>" > dynamic_printk/modules
    
    Disable a module:
    
    	$echo "set enabled=0 <module_name>" > dynamic_printk/modules
    
    Enable all modules:
    
    	$echo "set enabled=1 all" > dynamic_printk/modules
    
    Disable all modules:
    
    	$echo "set enabled=0 all" > dynamic_printk/modules
    
    Finally, passing "dynamic_printk" at the command line enables
    debugging for all modules. This mode can be turned off via the above
    disable command.
    
    [gkh: minor cleanups and tweaks to make the build work quietly]
    
    Signed-off-by: default avatarJason Baron <jbaron@redhat.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    
    346e15be