I think, that console and dmesg are not the same. console_loglevel mean sumething like text terminal. parport and so on, but dmesg is independent from this log level. You can write simple module like this: #include <linux/module.h> #include <linux/kernel.h> int init_module(void) { printk(KERN_EMERG "EMERG: Hello World.\n"); printk(KERN_ALERT "ALERT: Hello World.\n"); printk(KERN_CRIT "CRIT: Hello World.\n"); printk(KERN_WARNING "WARNING: Hello World.\n"); printk(KERN_NOTICE "NOTICE: Hello World.\n"); printk(KERN_INFO "INFO: Hello World.\n"); printk(KERN_DEBUG "DEBUG: Hello World.\n"); return 0; } void cleanup_module(void) { printk("Bye :)"); } and you see, that dmesg print everything (but /var/log/messages contained only WARNING, NOTICE and INFO levels messages, for console_loglevel = 3) 2011/3/5 Siddu <siddu.sjce@gmail.com>
Hi all, Hi all,
I am little stuck understanding this piece of code below and the way its been working
Question: since KERN_INFO = 6 # which is msg_log_level and as per code *msg_log_level < console_loglevel*
this line of printk is not supposed to show up in the dmesg log ? but it is showing up . Why
cat /proc/sys/kernel/printk 4 4 1 7
console_loglevel = 4
printk(KERN_INFO "Brought up %ld CPUs\n", (long)num_online_cpus());
static void _call_console_drivers(unsigned start, unsigned end, int msg_log_level) { if ((*msg_log_level < console_loglevel* || ignore_loglevel) && console_drivers && start != end) { if ((start & LOG_BUF_MASK) > (end & LOG_BUF_MASK)) { /* wrapped write */ __call_console_drivers(start & LOG_BUF_MASK, log_buf_len); __call_console_drivers(0, end & LOG_BUF_MASK); } else { __call_console_drivers(start, end); } } }
Thanks for any inputs ! -- Regards, ~Sid~
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies