Message ID | 20240827064529.1246786-2-tavip@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | NXP i.MX RT595 | expand |
Hi Octavian, On 27/8/24 08:45, Octavian Purdila wrote: > Add fifo32_peek() that returns the first element from the queue > without popping it. > > Signed-off-by: Octavian Purdila <tavip@google.com> > --- > include/qemu/fifo32.h | 28 ++++++++++++++++++++++++++++ > 1 file changed, 28 insertions(+) > > diff --git a/include/qemu/fifo32.h b/include/qemu/fifo32.h > index 4e9fd1b5ef..77aab488ae 100644 > --- a/include/qemu/fifo32.h > +++ b/include/qemu/fifo32.h > @@ -140,6 +140,34 @@ static inline uint32_t fifo32_pop(Fifo32 *fifo) > return ret; > } > > +/** > + * fifo32_peek: > + * @fifo: fifo to peek at > + * > + * Returns the value from the FIFO's head without poping it. Behaviour > + * is undefined if the FIFO is empty. Clients are responsible for > + * checking for emptiness using fifo32_is_empty(). > + * > + * Returns: the value from the FIFO's head > + */ > + > +static inline uint32_t fifo32_peek(Fifo32 *fifo) When respinning on top of Mark's Fifo8 work, please un-inline.
e On Fri, Sep 6, 2024 at 4:53 AM Philippe Mathieu-Daudé <philmd@linaro.org> wrote: > > Hi Octavian, > Hi Philippe, > On 27/8/24 08:45, Octavian Purdila wrote: > > Add fifo32_peek() that returns the first element from the queue > > without popping it. > > > > Signed-off-by: Octavian Purdila <tavip@google.com> > > --- > > include/qemu/fifo32.h | 28 ++++++++++++++++++++++++++++ > > 1 file changed, 28 insertions(+) > > > > diff --git a/include/qemu/fifo32.h b/include/qemu/fifo32.h > > index 4e9fd1b5ef..77aab488ae 100644 > > --- a/include/qemu/fifo32.h > > +++ b/include/qemu/fifo32.h > > @@ -140,6 +140,34 @@ static inline uint32_t fifo32_pop(Fifo32 *fifo) > > return ret; > > } > > > > +/** > > + * fifo32_peek: > > + * @fifo: fifo to peek at > > + * > > + * Returns the value from the FIFO's head without poping it. Behaviour > > + * is undefined if the FIFO is empty. Clients are responsible for > > + * checking for emptiness using fifo32_is_empty(). > > + * > > + * Returns: the value from the FIFO's head > > + */ > > + > > +static inline uint32_t fifo32_peek(Fifo32 *fifo) > > When respinning on top of Mark's Fifo8 work, please un-inline. > Do you mean to move it in a new fifo32.c file along with the other larger functions in this header? All of the fifo32 functions are defined as inlines.
diff --git a/include/qemu/fifo32.h b/include/qemu/fifo32.h index 4e9fd1b5ef..77aab488ae 100644 --- a/include/qemu/fifo32.h +++ b/include/qemu/fifo32.h @@ -140,6 +140,34 @@ static inline uint32_t fifo32_pop(Fifo32 *fifo) return ret; } +/** + * fifo32_peek: + * @fifo: fifo to peek at + * + * Returns the value from the FIFO's head without poping it. Behaviour + * is undefined if the FIFO is empty. Clients are responsible for + * checking for emptiness using fifo32_is_empty(). + * + * Returns: the value from the FIFO's head + */ + +static inline uint32_t fifo32_peek(Fifo32 *fifo) +{ + uint32_t ret = 0, num; + const uint8_t *buf; + + buf = fifo8_peek_buf(&fifo->fifo, 4, &num); + if (num != 4) { + return ret; + } + + for (int i = 0; i < sizeof(uint32_t); i++) { + ret |= buf[i] << (i * 8); + } + + return ret; +} + /** * There is no fifo32_pop_buf() because the data is not stored in the buffer * as a set of native-order words.
Add fifo32_peek() that returns the first element from the queue without popping it. Signed-off-by: Octavian Purdila <tavip@google.com> --- include/qemu/fifo32.h | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+)