]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/lib/rwlock.h
Use the command line utility dropdb instead of the psql command
[bacula/bacula] / bacula / src / lib / rwlock.h
index c91e8d43d0062970e46883975a574dcf992a3520..d310e1b3daec9f081ed34f5f5e911f43882e5be9 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Bacula Thread Read/Write locking code. It permits
- *  multiple readers but only one writer.                
+ *  multiple readers but only one writer.                 
  *
  *  Kern Sibbald, January MMI
  *
@@ -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
 #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 */
-   int              valid;           /* set when valid */
-   int              r_active;        /* readers active */
-   int              w_active;        /* writers active */
-   int              r_wait;          /* readers waiting */
-   int              w_wait;          /* writers waiting */
-} rwlock_t;
+   pthread_cond_t    read;            /* wait for read */
+   pthread_cond_t    write;           /* wait for write */
+   pthread_t         writer_id;       /* writer's thread id */
+   int               valid;           /* set when valid */
+   int               r_active;        /* readers active */
+   int               w_active;        /* writers active */
+   int               r_wait;          /* readers waiting */
+   int               w_wait;          /* writers waiting */
+} brwlock_t;
+
+typedef struct s_rwsteal_tag {
+   pthread_t         writer_id;       /* writer's thread id */
+   int               state;
+} brwsteal_t;
+
 
 #define RWLOCK_VALID  0xfacade
 
@@ -53,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 */