Re: [systemd-devel] [RFC 02/12] ring: add basic ring-buffer helper

2013-12-10 Thread Lennart Poettering
On Thu, 28.11.13 09:19, David Herrmann (dh.herrm...@gmail.com) wrote: Hmm, so if end and start match the buffer is empty? So you can never fill it entirely? Or am I missing something? I'd always maintain start index + fill level instead of a start index + end index, to avoid the

Re: [systemd-devel] [RFC 02/12] ring: add basic ring-buffer helper

2013-11-28 Thread David Herrmann
Hi On Wed, Nov 27, 2013 at 10:53 PM, Lennart Poettering lenn...@poettering.net wrote: On Wed, 27.11.13 19:48, David Herrmann (dh.herrm...@gmail.com) wrote: +void ring_flush(Ring *r) { +r-start = 0; +r-end = 0; +} + +void ring_clear(Ring *r) { +free(r-buf); +

Re: [systemd-devel] [RFC 02/12] ring: add basic ring-buffer helper

2013-11-28 Thread David Herrmann
Hi On Thu, Nov 28, 2013 at 1:27 AM, Lucas De Marchi lucas.de.mar...@gmail.com wrote: On Wed, Nov 27, 2013 at 4:48 PM, David Herrmann dh.herrm...@gmail.com wrote: This adds a very straightforward ring-buffer implementation to libsystemd-shared. Ring-buffers allow pushing data to, and pulling

[systemd-devel] [RFC 02/12] ring: add basic ring-buffer helper

2013-11-27 Thread David Herrmann
This adds a very straightforward ring-buffer implementation to libsystemd-shared. Ring-buffers allow pushing data to, and pulling data from, both ends of a buffer without modifying existing/remaining buffer content. This is very useful for network buffers and asynchronous writes. This

Re: [systemd-devel] [RFC 02/12] ring: add basic ring-buffer helper

2013-11-27 Thread Lennart Poettering
On Wed, 27.11.13 19:48, David Herrmann (dh.herrm...@gmail.com) wrote: +void ring_flush(Ring *r) { +r-start = 0; +r-end = 0; +} + +void ring_clear(Ring *r) { +free(r-buf); +memset(r, 0, sizeof(*r)); zero(*r) is a tiny bit nicer. +} + +/* + * Resize

Re: [systemd-devel] [RFC 02/12] ring: add basic ring-buffer helper

2013-11-27 Thread Lucas De Marchi
On Wed, Nov 27, 2013 at 4:48 PM, David Herrmann dh.herrm...@gmail.com wrote: This adds a very straightforward ring-buffer implementation to libsystemd-shared. Ring-buffers allow pushing data to, and pulling data from, both ends of a buffer without modifying existing/remaining buffer content.