[PATCH 03/11] intoduce dmesg to print the barebox printk to dmesg ring buffer
Sascha Hauer
s.hauer at pengutronix.de
Sat Mar 9 05:25:58 EST 2013
On Fri, Mar 08, 2013 at 12:59:35PM +0100, Jean-Christophe PLAGNIOL-VILLARD wrote:
> the size can be configured vai DMESG_KFIFO_OSIZE
>
> +int vprintk(const char *fmt, va_list args)
> +{
> + uint i, fi;
> + char printbuffer[CFG_PBSIZE];
> + char *s = printbuffer;
> + int level;
> +
> + /* For this to work, printbuffer must be larger than
> + * anything we ever want to print.
> + */
> + fi = i = vsprintf(printbuffer, fmt, args);
> +
> + level = printk_get_level(printbuffer);
> + if (level) {
> + s += 2;
> + fi -= 2;
> + kfifo_putc(dmesg_output_fifo, '<');
> + kfifo_putc(dmesg_output_fifo, level);
> + kfifo_putc(dmesg_output_fifo, '>');
> + }
> +
> + /* Print the string */
> + if (level <= printk_level + '0')
> + puts(s);
> +
> + kfifo_put(dmesg_output_fifo, s, fi);
When the buffer is full this drops the current message instead of the
oldest.
Sascha
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
More information about the barebox
mailing list