+2008-10-17 Bruno Haible <bruno@clisp.org>
+
+ * lock.h (gl_carray_waitqueue_t): Renamed from gl_waitqueue_t.
+ (gl_rwlock_t): Update.
+ * lock.c (gl_waitqueue_t): Alias to gl_carray_waitqueue_t.
+
2008-09-22 Eric Blake <ebb9@byu.net>
Bruno Haible <bruno@clisp.org>
/* ------------------------- gl_rwlock_t datatype ------------------------- */
+/* In this file, the waitqueues are implemented as circular arrays. */
+#define gl_waitqueue_t gl_carray_waitqueue_t
+
static inline void
gl_waitqueue_init (gl_waitqueue_t *wq)
{
unsigned int alloc; /* length of allocated array */
unsigned int offset; /* index of first waiting thread in array */
}
- gl_waitqueue_t;
+ gl_carray_waitqueue_t;
typedef struct
{
gl_spinlock_t guard; /* protects the initialization */
CRITICAL_SECTION lock; /* protects the remaining fields */
- gl_waitqueue_t waiting_readers; /* waiting readers */
- gl_waitqueue_t waiting_writers; /* waiting writers */
+ gl_carray_waitqueue_t waiting_readers; /* waiting readers */
+ gl_carray_waitqueue_t waiting_writers; /* waiting writers */
int runcount; /* number of readers running, or -1 when a writer runs */
}
gl_rwlock_t;