On 23:49 Fri 14 Dec , Sascha Hauer wrote: > On Thu, Dec 13, 2012 at 05:40:02PM +0100, Jean-Christophe PLAGNIOL-VILLARD wrote: > > This will allow to implement a dmesg mecanism in barebox > > > > Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@xxxxxxxxxxxx> > > --- > > include/kfifo.h | 2 ++ > > lib/kfifo.c | 21 +++++++++++++++++++++ > > 2 files changed, 23 insertions(+) > > > > diff --git a/include/kfifo.h b/include/kfifo.h > > index 25880f4..9dbbe0d 100644 > > --- a/include/kfifo.h > > +++ b/include/kfifo.h > > @@ -74,5 +74,7 @@ static inline unsigned int kfifo_len(struct kfifo *fifo) > > void kfifo_putc(struct kfifo *fifo, unsigned char c); > > unsigned int kfifo_getc(struct kfifo *fifo, unsigned char *c); > > > > +void kfifo_dump_str(struct kfifo *fifo, void (*dump)(unsigned char c)); > > + > > #endif > > > > diff --git a/lib/kfifo.c b/lib/kfifo.c > > index afd3894..7892aed 100644 > > --- a/lib/kfifo.c > > +++ b/lib/kfifo.c > > @@ -154,3 +154,24 @@ unsigned int kfifo_getc(struct kfifo *fifo, unsigned char *c) > > return 0; > > } > > > > +void kfifo_dump_str(struct kfifo *fifo, void (*dump)(unsigned char c)) > > +{ > > + int i; > > + unsigned char *c; > > + unsigned int l; > > + unsigned int len; > > + > > + len = fifo->in - fifo->out; > > + > > + /* first get the data from fifo->out until the end of the buffer */ > > + l = min(len, fifo->size - (fifo->out & (fifo->size - 1))); > > + c = fifo->buffer + (fifo->out & (fifo->size - 1)); > > + for (i = 0; i < l; i++) > > + dump(c[i]); > > + > > + /* then get the rest (if any) from the beginning of the buffer */ > > + c = fifo->buffer; > > + l = len - l; > > + for (i = 0; i < l; i++) > > + dump(c[i]); > > +} > > This function works in the innards of the fifo implementation and > replaces these two lines of code: > > while (kfifo_getc(console_output_fifo, &ch) == 0) > console_putc(CONSOLE_STDOUT, ch); > > You do not provide a reason why we should do this, so: no. the current code empty the fifo this new function just dump it so you can recall it Best Regards, J. _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox