initial tle_dring implementation 09/1909/2
authorKonstantin Ananyev <konstantin.ananyev@intel.com>
Thu, 7 Jul 2016 18:22:38 +0000 (19:22 +0100)
committerKonstantin Ananyev <konstantin.ananyev@intel.com>
Thu, 7 Jul 2016 22:34:40 +0000 (23:34 +0100)
commita633eec74619a96925285ac4dcf0154fbfafb855
treea3c178491a4e5508f4350feb913c1a6e6fb058d4
parentc034e6912a0bcaaaf90b64f2c09d6d1cdda3aecb
initial tle_dring implementation

The Dynamic Ring (dring) is a implementation of unbounded FIFO queue,
that supports lockless bulk enqueue/dequeue for multiple producers/consumers.
Internally it contains producer/consumer head/tail indexes
(same as DPDK rte_ring), plus linked list of Dynamic Ring Blocks (drb)s.
Each drb contains some metadata plus array of pointers to queued objects.
It is a caller responsibility to provide sufficient number of drbs for
enqueue operation, and manage unused drbs returned by dequeue operation.
dring features:
- FIFO (First In First Out)
- Lockless implementation.
- Multi- or single-consumer dequeue.
- Multi- or single-producer enqueue.
- Bulk dequeue.
- Bulk enqueue.

Change-Id: I3621c99c6b114a387036a397e79baa8d1588bdb5
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Makefile
lib/Makefile
lib/libtle_dring/Makefile [new file with mode: 0644]
lib/libtle_dring/dring.c [new file with mode: 0644]
lib/libtle_dring/tle_dring.h [new file with mode: 0644]
test/Makefile [new file with mode: 0644]
test/dring/Makefile [new file with mode: 0644]
test/dring/test_dring.c [new file with mode: 0644]