public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Eugene Teo <eugene.teo@eugeneteo.net>
To: Amir Hermelin <amir@montilio.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: 'flushing' printk to klogd
Date: Mon, 10 Nov 2003 21:14:55 +0800	[thread overview]
Message-ID: <20031110131455.GA5649@despammed.com> (raw)
In-Reply-To: <010b01c3a75f$4514f940$0a01a8c0@CARTMAN>

Hi Amir,

No, I don't think flush_printk_to_syslog exists but relevant
code in do_syslog can form our flush_printk_to_syslog().

In do_syslog, we can find the code to read the ring buffer:

232         while (!error && (log_start != log_end) && i < len) {
233             c = LOG_BUF(log_start);
234             log_start++;
235             spin_unlock_irq(&logbuf_lock);
236             error = __put_user(c,buf);
237             buf++;
238             i++;
239             spin_lock_irq(&logbuf_lock);
240         }

One way we can do is to add case 10 to do_syslog's switch, so that
we can call do_syslog(10, buf, count) when we want to flush the
printk to a log. 

We have to find a way to perform what is required in case 3, and in
our case, after we read the messages from the ring buffer, we want to 
flush it, so we do a logged_chars = 0; in the end.

But take note that __put_user() could sleep. Our messages could be
overwritten by other printks. 

If you are free, can you code it, and mail me the patch? I would have
coded it if not for my exams. Thanks.

Eugene

<quote sender="Amir Hermelin">
> Thanks Eugene
> 
> I've already changed the buf len (in my development version).  However, what
> I really need is a way to flush the buffer before going into either heavy
> log sections or, more importantly, fragile code sections.  So, if I'm in a
> procedure that is safe to sleep, I can do the following:
> 
> int proc_ok_to_sleep()
> {
> 	printk("these are the args we got" ....);
> 	flush_printk_to_syslog();
> 	/* Here starts the critical section, possibly will cause kernel
> panic */
> 	....
> }
> 
> Does a function such as the flush_printk_to_syslog() exists?
> 
> Thanks,
> Amir.
> 
> -----Original Message-----
> From: Eugene Teo [mailto:eugene.teo@eugeneteo.net] 
> Sent: Sunday, November 09, 2003 6:10 PM
> To: Amir Hermelin
> Cc: linux-kernel@vger.kernel.org
> Subject: Re: 'flushing' printk to klogd
> 
> 
> You can configure your syslog to output the messages to
> a dedicated file. Also, you can increase the length
> of your buffer:
> 
> 352  #define LOG_BUF_LEN    (131072)
> 353  #elif defined(CONFIG_SMP)
> 354  #define LOG_BUF_LEN    (32768)
> 355 +#elif defined(CONFIG_VMSTAT_PFAULTS)
> 356 +#define LOG_BUF_LEN (1048576)
> 357  #else  
> 358  #define LOG_BUF_LEN    (16384) /* This must be a power of two */
> 359  #endif
> 
> Note that even if you flush printk output before the circular buffer wraps,
> you will still likely to lose some output since it doesn't take care of
> multiple writes at the same time.
> 
> Eugene
> 
> <quote sender="Amir Hermelin">
> > Hi,
> > Is there any way to make sure klogd flushes printk output to 
> > /var/log/messages before the circular buffer wraps?  I intend to use 
> > this only during the development phase, but I find that during 
> > 'activity storms' where lots of printk's are involved I lose some of 
> > the output.
> > 
> > Thanks,
> > Amir.
> > 
> > 
> > -
> > To unsubscribe from this list: send the line "unsubscribe 
> > linux-kernel" in the body of a message to majordomo@vger.kernel.org 
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> > Please read the FAQ at  http://www.tux.org/lkml/
> 
> 
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
> 

-- 


      reply	other threads:[~2003-11-10 13:14 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-11-09 14:42 'flushing' printk to klogd Amir Hermelin
2003-11-09 16:09 ` Eugene Teo
2003-11-10  7:50   ` Amir Hermelin
2003-11-10 13:14     ` Eugene Teo [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20031110131455.GA5649@despammed.com \
    --to=eugene.teo@eugeneteo.net \
    --cc=amir@montilio.com \
    --cc=eugeneteo@despammed.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox