citrus_lock.h (3d4b80da4e518a0c3932e17f9afe730efa98e26c) citrus_lock.h (ff0b75b897dde9a8455f0c199af9a75e424c38cc)
1/* $FreeBSD$ */
2/*-
3 * Copyright (C) 2010 Gabor Kovesdan <gabor@FreeBSD.org>
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

--- 13 unchanged lines hidden (view full) ---

22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 * SUCH DAMAGE.
26 */
27
28#include <pthread.h>
29
1/* $FreeBSD$ */
2/*-
3 * Copyright (C) 2010 Gabor Kovesdan <gabor@FreeBSD.org>
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

--- 13 unchanged lines hidden (view full) ---

22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 * SUCH DAMAGE.
26 */
27
28#include <pthread.h>
29
30/* XXX Yes, the original code has three separate file-local lock instances */
31static pthread_rwlock_t lock = PTHREAD_RWLOCK_INITIALIZER;
32
33#define WLOCK if (__isthreaded) \
34 pthread_rwlock_wrlock(&lock);
35#define UNLOCK if (__isthreaded) \
36 pthread_rwlock_unlock(&lock);
30#define WLOCK(lock) if (__isthreaded) \
31 pthread_rwlock_wrlock(lock);
32#define UNLOCK(lock) if (__isthreaded) \
33 pthread_rwlock_unlock(lock);