X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Flib%2Frwlock.h;h=d310e1b3daec9f081ed34f5f5e911f43882e5be9;hb=fad06408677ccf4e01bf28c01702ab337da2ec05;hp=79bd96fb9e35e70d000cee3dbef42668bbf156a4;hpb=f7fb2261ab648bfc02a32773b7a5a2201783e189;p=bacula%2Fbacula diff --git a/bacula/src/lib/rwlock.h b/bacula/src/lib/rwlock.h index 79bd96fb9e..d310e1b3da 100644 --- a/bacula/src/lib/rwlock.h +++ b/bacula/src/lib/rwlock.h @@ -11,7 +11,7 @@ * */ /* - Copyright (C) 2000, 2001, 2002 Kern Sibbald and John Walker + Copyright (C) 2000-2003 Kern Sibbald and John Walker This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -33,7 +33,7 @@ #ifndef __RWLOCK_H #define __RWLOCK_H 1 -typedef struct rwlock_tag { +typedef struct s_rwlock_tag { pthread_mutex_t mutex; pthread_cond_t read; /* wait for read */ pthread_cond_t write; /* wait for write */ @@ -43,7 +43,13 @@ typedef struct rwlock_tag { int w_active; /* writers active */ int r_wait; /* readers waiting */ int w_wait; /* writers waiting */ -} rwlock_t; +} brwlock_t; + +typedef struct s_rwsteal_tag { + pthread_t writer_id; /* writer's thread id */ + int state; +} brwsteal_t; + #define RWLOCK_VALID 0xfacade @@ -54,13 +60,13 @@ typedef struct rwlock_tag { /* * read/write lock prototypes */ -extern int rwl_init(rwlock_t *wrlock); -extern int rwl_destroy(rwlock_t *rwlock); -extern int rwl_readlock(rwlock_t *rwlock); -extern int rwl_readtrylock(rwlock_t *rwlock); -extern int rwl_readunlock(rwlock_t *rwlock); -extern int rwl_writelock(rwlock_t *rwlock); -extern int rwl_writetrylock(rwlock_t *rwlock); -extern int rwl_writeunlock(rwlock_t *rwlock); +extern int rwl_init(brwlock_t *wrlock); +extern int rwl_destroy(brwlock_t *rwlock); +extern int rwl_readlock(brwlock_t *rwlock); +extern int rwl_readtrylock(brwlock_t *rwlock); +extern int rwl_readunlock(brwlock_t *rwlock); +extern int rwl_writelock(brwlock_t *rwlock); +extern int rwl_writetrylock(brwlock_t *rwlock); +extern int rwl_writeunlock(brwlock_t *rwlock); #endif /* __RWLOCK_H */