用procfs控制printk打印消息
1 .显示当前printk打印消息的日志级别
# cat /proc/sys/kernel/printk
# 7 4 1 7
“7 4 1 7”分别为console_loglevel、default_message_loglevel、minimum_c onsole_loglevel、default_console_loglevel
意味着只有优先级高于Kern_debug(7)的打印消息才能输出到终端
更改console_loglevel
# echo 8417/proc/sys/kernel/printk
键入8 4 1 7更改console_loglevel的值,以便所有打印消息都输出到终端
3. procfs系列节点
//kernel/sysctl.h
saticstructctl _ table kern _ table [ ]={
……
#if defined CONFIG_PRINTK
{
. procname='printk ',
. data=console_loglevel,
. Maxlen=4*sizeof(int ),
. mode=0644,
. proc_handler=proc_dointvec,
(,
{
. procname='printk_ratelimit ',
. data=printk _ rate limit _ state.interval,
. Maxlen=sizeof(int ),
. mode=0644,
. proc _ handler=proc _ dointvec _ jiffies,
(,
{
. procname=' printk _ rate limit _ burst ',
. data=printk _ rate limit _ state.burst,
. Maxlen=sizeof(int ),
. mode=0644,
. proc_handler=proc_dointvec,
(,
{
. procname='printk_delay ',
. data=printk_delay_msec,
. Maxlen=sizeof(int ),
. mode=0644,
. proc _ handler=proc _ dointvec _ minmax,
. extra1=zero,
. extra2=ten_thousand,
(,
{
. procname='printk_devkmsg ',
. data=devkmsg_log_str,
. maxlen=DEVKMSG_STR_MAX_SIZE,
. mode=0644,
. proc _ handler=dev kmsg _ sysctl _ set _ log lvl,
(,
{
. procname='dmesg_restrict ',
. data=dmesg_restrict,
. Maxlen=sizeof(int ),
. mode=0644,
. proc _ handler=proc _ dointvec _ minmax _ sysadmin,
. extra1=zero,
. extra2=one,
(,
{
. procname='kptr_restrict ',
. data=kptr_restrict,
. Maxlen=sizeof(int ),
. mode=0644,
. proc _ handler=proc _ dointvec _ minmax _ sysadmin,
. extra1=zero,
. extra2=two,
(,
#endif
……
{}
(;