# HG changeset patch # User Ralf Ertzinger # Date 1195743112 -3600 # Node ID b73ea297d197dd270d82b8c0cdaf454dcd8e4648 # Parent cc5e9ec110a4b57f99e5d8520dd228b8dcbcd288 - New version of ringbuffer code diff -r cc5e9ec110a4 -r b73ea297d197 src/neon/rb.c --- a/src/neon/rb.c Thu Nov 22 02:54:06 2007 +0300 +++ b/src/neon/rb.c Thu Nov 22 15:51:52 2007 +0100 @@ -343,12 +343,23 @@ _ENTER; _RB_LOCK(rb->lock); - u = rb->used; + u = used_rb_locked(rb); _RB_UNLOCK(rb->lock); _LEAVE u; } +/* + * Return the amount of used space currently in the rb. + * Assume the rb lock is already being held. + */ +unsigned int used_rb_locked(struct ringbuf* rb) { + + _ENTER; + + _LEAVE rb->used; +} + /* * destroy a ringbuffer diff -r cc5e9ec110a4 -r b73ea297d197 src/neon/rb.h --- a/src/neon/rb.h Thu Nov 22 02:54:06 2007 +0300 +++ b/src/neon/rb.h Thu Nov 22 15:51:52 2007 +0100 @@ -61,6 +61,7 @@ unsigned int free_rb(struct ringbuf* rb); unsigned int free_rb_locked(struct ringbuf* rb); unsigned int used_rb(struct ringbuf* rb); +unsigned int used_rb_locked(struct ringbuf* rb); void destroy_rb(struct ringbuf* rb); #endif