All of lore.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.