public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Stephane Couture <muscou@yahoo.ca>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Robin Getz <rgetz@blackfin.uclinux.org>, linux-kernel@vger.kernel.org
Subject: Re: early_printk accessing __log_buf
Date: Wed, 18 Jul 2007 22:26:25 -0400	[thread overview]
Message-ID: <469ECBD1.8080404@yahoo.ca> (raw)
In-Reply-To: <20070718172603.231351ea.akpm@linux-foundation.org>

Andrew Morton wrote:
> On Wed, 18 Jul 2007 19:39:46 -0400
> Robin Getz <rgetz@blackfin.uclinux.org> wrote:
> 
>> On Wed 18 Jul 2007 18:16, Andrew Morton pondered:
>>> I'd suggest that any interface into here should be via function calls,
>>> not via direct access to printk internals: think up some nice
>>> copy_me_some_of_the_log_buffer() interface.
>> If so - I would still like to put it in:
>>  - ifdef CONFIG_EARLY_PRINTK
>>  - and define as __init
>>
>> so that people don't use it when they shouldn't (when the kernel is up an 
>> running).
>>
>> Something simple like - early_copy_log_buff(void *dest, size_t n) 
>>
>> copies n bytes from log_buf to memory area dest. Returns number of bytes that 
>> could not be copied. Can find out how many bytes are in the log_buff by 
>> calling with zero size.
>>
>> This is not destructive to existing interfaces (log_start and con_start are 
>> not updated/used). This should ensure that if booting does work - that normal 
>> messages come out the standard method.
>>
>> Any other suggestions?
>>
> 
> When I was at $EARLIER_EMPLOYER, we had code in there to copy the last
> kilobyte-odd of the log buffer into flash when the box oopsed.
> 
> So there's one instance proof that something more general would be needed. 
> Probably there are others, but they'll mainly be in the consumer/embedded
> area, and those sorts of engineers don't read this mailing list much.
> 

We log everything to SRAM so having the option to select the buffer 
destination address would be nice.  My crude way of doing it:

--- 2.6.21/kernel/printk.c@@/main/1      2007-04-27 05:34:35.000000000
-0400
+++ 2.6.21/kernel/printk.c@@/main/2      2007-05-01 02:27:18.000000000 -0400
@@ -94,7 +94,12 @@
   */
  static unsigned long log_start;        /* Index into log_buf: next 
char to be read by syslog() */
  static unsigned long con_start;        /* Index into log_buf: next 
char to be sent to consoles */
+#ifndef CONFIG_LOG_BUF_ALTERNATE_ADRS
  static unsigned long log_end;  /* Index into log_buf: 
most-recently-written-char + 1 */
+#else
+extern int alt_log_end_adrs;
+#define log_end (*(unsigned long*)alt_log_end_adrs)
+#endif

  /*
   *     Array of consoles built from command line options (console=)
@@ -117,8 +122,14 @@

  #ifdef CONFIG_PRINTK

+#ifndef CONFIG_LOG_BUF_ALTERNATE_ADRS
  static char __log_buf[__LOG_BUF_LEN];
  static char *log_buf = __log_buf;
+#else
+extern int alt_log_buf_adrs;
+#define __log_buf ((unsigned char*)alt_log_buf_adrs)
+#define log_buf ((unsigned char*)alt_log_buf_adrs)
+#endif
  static int log_buf_len = __LOG_BUF_LEN;
  static unsigned long logged_chars; /* Number of chars produced since 
last read+clear operation */



  reply	other threads:[~2007-07-19  5:02 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-18 21:56 early_printk accessing __log_buf Robin Getz
2007-07-18 22:16 ` Andrew Morton
2007-07-18 23:39   ` Robin Getz
2007-07-18 23:53     ` Mike Frysinger
2007-07-19  3:37       ` Robin Getz
2007-07-19  3:47         ` Andrew Morton
2007-07-19  0:26     ` Andrew Morton
2007-07-19  2:26       ` Stephane Couture [this message]
2007-07-19  3:58       ` Robin Getz
2007-07-22 23:50         ` Mike Frysinger
2007-07-23  0:14           ` Paul Mundt
2007-07-23 18:19           ` Robin Getz
2007-07-23 20:15             ` Andrew Morton
2007-07-23 20:54               ` Mike Frysinger
2007-07-23 21:05                 ` Andrew Morton
2007-07-23 22:10                   ` Mike Frysinger
2007-07-23 22:15               ` Robin Getz
2007-07-23 22:34                 ` Andrew Morton
2007-07-24 17:50                   ` Robin Getz
2007-07-24 18:12                     ` Andrew Morton
2007-07-24 20:12                       ` Robin Getz
2007-07-24 21:30                         ` Andrew Morton
2007-07-31  7:47                           ` Mike Frysinger
2007-07-31  7:59                             ` Bryan Wu
2007-07-31  8:11                               ` Mike Frysinger
2007-07-31 18:36                             ` Andrew Morton

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=469ECBD1.8080404@yahoo.ca \
    --to=muscou@yahoo.ca \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rgetz@blackfin.uclinux.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