Re: early_printk accessing __log_buf

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

 



On 7/18/07, Robin Getz <[email protected]> wrote:
On Wed 18 Jul 2007 20:26, Andrew Morton pondered:
> Robin Getz wrote:
> > [need to access _log_buf from external for early debugging code]
> >
> > 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.
>
> 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.
>

Hmm - I think that if you call with NULL dest, and have it advance the
pointer, you could do the same thing with something like:

 /* see how many bytes are in the buff */
 length = early_copy_log_buff(NULL, NULL);
 /* advance the pointer, so we only copy the last 1k */
 if (length >= 1024 )
    left = early_copy_log_buff(NULL, length - 1024);
 /* copy to temp buffer, to save to flash */
 early_copy_log_buff(buff, 1024);
 save_buff_to_flash(buff);

That way - you can put this in the standard places for failure, and still have
only one function polluting printk.c (Although if you want to use it for
failure trapping - it's up for "normal" run time use, and doesn't go into
__init.

> 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.

Adding a few more 'embedded' folks - who might have some thoughts/opinions.

i think the attached two functions account for what Robin and Andrew
were thinking ...
-mike

Attachment: linux-log_buf_read.patch
Description: Binary data


[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux