Gr8, that's a very detaied explanation. Thank You. -Vamsi -----Original Message----- From: Jesper Juhl [mailto:jesper.juhl@xxxxxxxxx] Sent: Thursday, March 09, 2006 12:51 AM To: Vamsi Krishna (WT01 - Wireless Networks and Devices) Cc: rohit13hooda@xxxxxxxxxxxxxx; gowri@xxxxxxxxxxx; kernelnewbies@xxxxxxxxxxxx Subject: Re: printk -- unable to print messages On 3/8/06, krishna.vamsi@xxxxxxxxx <krishna.vamsi@xxxxxxxxx> wrote: > bt i would like to know why it cant print whn we are in XTerm,, wild > guess suggests me of problem related to the tty and pts drivers,,, > i'm afraid it may not be !!! > > can any one clarify this ???? > printk() puts messages into a ring buffer inside the kernel. It knows nothing about wether or not you are in text mode or not, nor does it care. All it does is put the messages into the buffer and then it's up to tools like klogd/syslogd (read their man pages for details) to move the messages from that buffer and into your logs (or output them on your console or whatever you want to happen with them). What usually happens is that all messages go into your system log files (unless the system crashed, then they may not have made it that far) and in addition, important messages (those with a loglevel above a certain treshold) are also printed on the system console. Now the "console" is not just any random shell you may have open - it's /dev/console - the system console role is usually assigned to the very first tty or sometimes a serial port, so if you want to view the messages on the screen as they get printed you need to be working on the system console. For X there's a program called "xconsole" that can show system console messages in a graphical window on your X desktop. If you want to take a peak at what's currently in the kernels message buffer, the "dmesg" program is provided for that purpose. So you can run your code, then run dmesg to see whatever messages it put into the message buffer if you are not on the console or you don't want to go read the logs. Note that the kernels message buffer is a ring buffer of a fixed size (set at compile time), this means that whenever the buffer gets full the oldest message is overwritten with the newest one, so it doesn't always hold all messages going back to when the system was booted up - for that you need to look at your system logs. dmesg just shows you what is in the buffer right now. I hope that explanation clarified things a bit for you. -- Jesper Juhl <jesper.juhl@xxxxxxxxx> Don't top-post http://www.catb.org/~esr/jargon/html/T/top-post.html Plain text mails only, please http://www.expita.com/nomime.html -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/