[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[UNIKRAFT PATCH, v2, 08/15] lib/ukring: Use Unikraft to enable ring buffer debugging



This commit uses the flags set from ukdebug to determine whether
to output critical messages from the ring buffer's debug
sequences.

Signed-off-by: Alexander Jung <alexander.jung@xxxxxxxxx>
---
 lib/ukring/include/uk/ring.h | 18 +++++++++---------
 lib/ukring/ring.c            |  2 +-
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/lib/ukring/include/uk/ring.h b/lib/ukring/include/uk/ring.h
index 1cc8982..01adaf3 100644
--- a/lib/ukring/include/uk/ring.h
+++ b/lib/ukring/include/uk/ring.h
@@ -50,7 +50,7 @@ struct uk_ring {
   volatile uint32_t  cons_tail;
   int                cons_size;
   int                cons_mask;
-#ifdef DEBUG_BUFRING
+#ifdef CONFIG_LIBUKDEBUG
   struct uk_mutex   *lock;
 #endif
   void              *ring[0] __aligned(CACHE_LINE_SIZE);
@@ -66,7 +66,7 @@ uk_ring_enqueue(struct uk_ring *r, void *buf)
 {
   uint32_t prod_head, prod_next, cons_tail;
 
-#ifdef DEBUG_BUFRING
+#ifdef CONFIG_LIBUKDEBUG_PRINTK_CRIT
   int i;
 
   /*
@@ -99,7 +99,7 @@ uk_ring_enqueue(struct uk_ring *r, void *buf)
     }
   } while (!ukarch_compare_exchange_sync(&r->prod_head, prod_head, prod_next));
 
-#ifdef DEBUG_BUFRING
+#ifdef CONFIG_LIBUKDEBUG_PRINTK_CRIT
   if (r->ring[prod_head] != NULL)
     uk_pr_crit("dangling value in enqueue\n");
 #endif
@@ -147,7 +147,7 @@ uk_ring_dequeue(struct uk_ring *r)
 
   buf = r->ring[cons_head];
 
-#ifdef DEBUG_BUFRING
+#ifdef CONFIG_LIBUKDEBUG
   r->ring[cons_head] = NULL;
 #endif
 
@@ -237,7 +237,7 @@ uk_ring_dequeue_single(struct uk_ring *r)
   r->cons_head = cons_next;
   buf = r->ring[cons_head];
 
-#ifdef DEBUG_BUFRING
+#ifdef CONFIG_LIBUKDEBUG_PRINTK_CRIT
   r->ring[cons_head] = NULL;
 
   if (!uk_mutex_is_locked(r->lock))
@@ -272,7 +272,7 @@ uk_ring_advance_single(struct uk_ring *r)
 
   r->cons_head = cons_next;
 
-#ifdef DEBUG_BUFRING
+#ifdef CONFIG_LIBUKDEBUG
   r->ring[cons_head] = NULL;
 #endif
 
@@ -311,7 +311,7 @@ uk_ring_putback_single(struct uk_ring *r, void *new)
 static __inline void *
 uk_ring_peek(struct uk_ring *r)
 {
-#ifdef DEBUG_BUFRING
+#ifdef CONFIG_LIBUKDEBUG_PRINTK_CRIT
   if ((r->lock != NULL) && !uk_mutex_is_locked(r->lock))
     uk_pr_crit("lock not held on single consumer dequeue\n");
 #endif
@@ -331,7 +331,7 @@ uk_ring_peek(struct uk_ring *r)
 static __inline void *
 uk_ring_peek_clear_single(struct uk_ring *r)
 {
-#ifdef DEBUG_BUFRING
+#ifdef CONFIG_LIBUKDEBUG_PRINTK_CRIT
   void *ret;
 
   if (!uk_mutex_is_locked(r->lock))
@@ -356,7 +356,7 @@ uk_ring_peek_clear_single(struct uk_ring *r)
   /* atomic_thread_fence_acq(); */
 #endif
 
-#ifdef DEBUG_BUFRING
+#ifdef CONFIG_LIBUKDEBUG
   /*
    * Single consumer, i.e. cons_head will not move while we are
    * running, so atomic_swap_ptr() is not necessary here.
diff --git a/lib/ukring/ring.c b/lib/ukring/ring.c
index 1431cb9..db5600f 100644
--- a/lib/ukring/ring.c
+++ b/lib/ukring/ring.c
@@ -56,7 +56,7 @@ uk_ring_alloc(struct uk_alloc *a, int count, int flags, 
struct uk_mutex *lock)
     return NULL;
   }
 
-#ifdef DEBUG_BUFRING
+#ifdef CONFIG_LIBUKDEBUG
   r->lock = lock;
 #endif
 
-- 
2.20.1




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.