RE: printk -- unable to print messages

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



A really very gud and detailed explanation ....

Thnx.

~Abu.

Abu M. Muttalib
Sr. Engineer, Embedded System,
Aftek Infosys Ltd.,
Pune, India
Office: 91-20-25449260-65 X-254
Mobile: (0)9881322820
Email: abum@xxxxxxxxx



-----Original Message-----
From: kernelnewbies-bounce@xxxxxxxxxxxx
[mailto:kernelnewbies-bounce@xxxxxxxxxxxx]On Behalf Of Jesper Juhl
Sent: Thursday, March 09, 2006 12:51 AM
To: krishna.vamsi@xxxxxxxxx
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/



--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
FAQ:           http://kernelnewbies.org/faq/


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux