[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [UNIKRAFT PATCH 0/5] Introduce Ring Buffer Implementation
From: Alexander Jung <alexander.jung@xxxxxxxxx> This series introduces a port of FreeBSD's buf_ring.{h,c} implementation for use within Unikraft. This simple ring buffer can be used for message passing in queues, for example within a AF_UNIX socket implementation between two threads. The implementation is therefore thread safe and provides a generic data field which is initialized to the desired ring buffer length. The implementation is provided within ukmpi as a new option, LIBUKMPI_RING, which exposes the following new methods: - uk_ring_alloc - uk_ring_free - uk_ring_enqueue - uk_ring_dequeue - uk_ring_dequeue_single - uk_ring_advance_single - uk_ring_putback_single - uk_ring_peek - uk_ring_peek_clear_single - uk_ring_full - uk_ring_empty - uk_ring_count The port is currently limited, with no support for reading atomic values from ARM{32,64} CPU registers (described in the comments inline). As a result, use of the ring buffer implementation is untested on ARM. Alexander Jung (5): lib/ukmpi: Introduce simple ring interface KConfig option lib/ukmpi: Initial port of FreeBSD's buf_ring.h lib/ukmpi: Provide ring buffer allocation and free methods lib/ukmpi: Include ring buffer into Unikraft build process lib/ukmpi: Export the global ring buffer (de)init methods lib/ukmpi/Config.uk | 23 ++- lib/ukmpi/Makefile.uk | 1 + lib/ukmpi/exportsyms.uk | 3 + lib/ukmpi/include/uk/ring.h | 474 ++++++++++++++++++++++++++++++++++++++++++++ lib/ukmpi/ring.c | 87 ++++++++ 5 files changed, 587 insertions(+), 1 deletion(-) create mode 100644 lib/ukmpi/include/uk/ring.h create mode 100644 lib/ukmpi/ring.c -- 2.11.0
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |