From 6a8abf28a8ee1f21b2b1edd6deda822560e7889f Mon Sep 17 00:00:00 2001 From: Matheus Date: Sun, 8 Jan 2023 19:29:17 -0300 Subject: [PATCH] ringbuffer: datacount function --- src/include/ringbuffer.h | 1 + src/include/ringbuffer/ringbuffer.c | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/src/include/ringbuffer.h b/src/include/ringbuffer.h index 2f2412f0..1a538f66 100644 --- a/src/include/ringbuffer.h +++ b/src/include/ringbuffer.h @@ -12,6 +12,7 @@ typedef struct{ } ringbuffer_t; +size_t ringbuffer_datacount(ringbuffer_t* ringubffer); int ringbuffer_init(ringbuffer_t* ringbuffer, size_t size); size_t ringbuffer_read(ringbuffer_t* ringbuffer, void* buffer, size_t count); size_t ringbuffer_write(ringbuffer_t* ringbuffer, void* buffer, size_t count); diff --git a/src/include/ringbuffer/ringbuffer.c b/src/include/ringbuffer/ringbuffer.c index c8f14a23..bcea2a58 100644 --- a/src/include/ringbuffer/ringbuffer.c +++ b/src/include/ringbuffer/ringbuffer.c @@ -42,6 +42,17 @@ size_t ringbuffer_read(ringbuffer_t* ringbuffer, void* buffer, size_t count){ } +size_t ringbuffer_datacount(ringbuffer_t* ringbuffer){ + spinlock_acquire(&ringbuffer->lock); + + size_t c = ringbuffer->write - ringbuffer->read; + + spinlock_release(&ringbuffer->lock); + + return c; + +} + size_t ringbuffer_write(ringbuffer_t* ringbuffer, void* buffer, size_t count){ spinlock_acquire(&ringbuffer->lock);