summaryrefslogtreecommitdiffstats
path: root/ldap/servers/slapd/rwlock.h
blob: 112f1de6ea3a6b11da02747d33093c7a52c330fa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/** BEGIN COPYRIGHT BLOCK
 * Copyright 2001 Sun Microsystems, Inc.
 * Portions copyright 1999, 2001-2003 Netscape Communications Corporation.
 * All rights reserved.
 * END COPYRIGHT BLOCK **/
#ifndef _RWLOCK_H_
#define _RWLOCK_H_

#include <prlock.h>
#include <prcvar.h>

typedef struct _rwl {
    PRLock	*rwl_readers_mutex;
    PRLock	*rwl_writers_mutex;
    PRCondVar	*rwl_writer_waiting_cv;
    int		rwl_num_readers;
    int		rwl_writer_waiting;

    int		(*rwl_acquire_read_lock)( struct _rwl * );
    int		(*rwl_relinquish_read_lock)( struct _rwl * );

    int		(*rwl_acquire_write_lock)( struct _rwl * );
    int		(*rwl_relinquish_write_lock)( struct _rwl * );
} rwl;

extern rwl *rwl_new();
extern void rwl_free( rwl **rh );
#endif /* _RWLOCK_H_ */