apr-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jwool...@apache.org
Subject cvs commit: apr/include apr_ring.h
Date Wed, 13 Aug 2003 01:46:13 GMT
jwoolley    2003/08/12 18:46:12

  Modified:    include  apr_ring.h
  Log:
  seemed like a handy tool.
  
  Revision  Changes    Path
  1.11      +25 -0     apr/include/apr_ring.h
  
  Index: apr_ring.h
  ===================================================================
  RCS file: /home/cvs/apr/include/apr_ring.h,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -d -u -r1.10 -r1.11
  --- apr_ring.h	13 Aug 2003 01:32:11 -0000	1.10
  +++ apr_ring.h	13 Aug 2003 01:46:12 -0000	1.11
  @@ -482,10 +482,14 @@
   
   #ifdef APR_RING_DEBUG
   #include <stdio.h>
  +#include <assert.h>
  +
   #define APR_RING_CHECK_ONE(msg, ptr)					\
   	fprintf(stderr, "*** %s %p\n", msg, ptr)
  +
   #define APR_RING_CHECK(hp, elem, link, msg)				\
   	APR_RING_CHECK_ELEM(APR_RING_SENTINEL(hp, elem, link), elem, link, msg)
  +
   #define APR_RING_CHECK_ELEM(ep, elem, link, msg) do {			\
   	struct elem *start = (ep);					\
   	struct elem *here = start;					\
  @@ -512,6 +516,17 @@
   	} while (here != start);					\
   	fprintf(stderr, "*** ring check end\n");			\
       } while (0)
  +
  +#define APR_RING_CHECK_CONSISTENCY(hp, elem, link) do {			\
  +	struct elem *start = APR_RING_SENTINEL(hp, elem, link);		\
  +	struct elem *here = start;					\
  +	do {								\
  +	    assert(APR_RING_PREV(APR_RING_NEXT(here, link), link) == here); \
  +	    assert(APR_RING_NEXT(APR_RING_PREV(here, link), link) == here); \
  +	    here = APR_RING_NEXT(here, link);				\
  +	} while (here != start);					\
  +    } while (0)
  +
   #else
   /**
    * Print a single pointer value to STDERR
  @@ -531,6 +546,16 @@
    * @param msg  Descriptive message
    */
   #define APR_RING_CHECK(hp, elem, link, msg)
  +/**
  + * Loops around a ring and checks all the pointers for consistency.  Pops
  + * an assertion if any inconsistency is found.  Same idea as APR_RING_CHECK()
  + * except that it's silent if all is well.
  + *   (This is a no-op unless APR_RING_DEBUG is defined.)
  + * @param hp   Head of the ring
  + * @param elem The name of the element struct
  + * @param link The name of the APR_RING_ENTRY in the element struct
  + */
  +#define APR_RING_CHECK_CONSISTENCY(hp, elem, link)
   /**
    * Dump all ring pointers to STDERR, starting with the given element and
    * looping all the way around the ring back to that element.  Aborts if
  
  
  

Mime
View raw message