图形界面终端下打印内核调试信息

(备份)

很多比较新的Linux系统中(如Fedora 16),如果要在图形界面的终端下调试一个内核模块,printk()函数的输出信息是在终端下显示不出来的,需要查看/var/log/messages或通过dmesg命令查看其输出信息,这样不太方便。

而要使系统能打印出printk()函数的信息,又需要在tty下(ctrl+alt+F1~F6进入),这样有时候也很不方便。

可以利用下面函数,使其即使在内核模块中打印信息,也可以在图形界面的终端下输出信息(但是不会记录到/var/log/messages中):

#include <linux/tty.h>

void print_string(char *str)

{

    struct tty_struct *tty;

    tty = current->signal->tty;

    if(tty != NULL)

    {

        (((tty->driver)->ops)->write)(tty, str, strlen(str));

        (((tty->driver)->ops)->write)(tty, "\015\012", 2);

    }

}

你可能感兴趣的:(图形界面)