2 * Copyright (c) 2012 Your File System Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
13 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR `AS IS'' AND ANY EXPRESS OR
14 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
15 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
16 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
17 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
18 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
19 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
20 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
22 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 #ifndef OPENAFS_OPR_LOCK_H
25 #define OPENAFS_OPR_LOCK_H 1
29 typedef pthread_mutex_t opr_mutex_t;
31 # define opr_mutex_init(mutex) \
32 opr_Verify(pthread_mutex_init(mutex, NULL) == 0)
34 # define opr_mutex_destroy(mutex) \
35 opr_Verify(pthread_mutex_destroy(mutex) == 0)
37 # define opr_mutex_enter(mutex) \
38 opr_Verify(pthread_mutex_lock(mutex) == 0)
40 # define opr_mutex_exit(mutex) \
41 opr_Verify(pthread_mutex_unlock(mutex) == 0)
43 # define opr_mutex_tryenter(mutex) \
44 (pthread_mutex_trylock(mutex) ? 0: 1)
46 typedef pthread_cond_t opr_cv_t;
48 # define opr_cv_init(condvar) \
49 opr_Verify(pthread_cond_init(condvar, NULL) == 0)
51 # define opr_cv_destroy(condvar) \
52 opr_Verify(pthread_cond_destroy(condvar) == 0)
54 # define opr_cv_wait(condvar, mutex) \
55 opr_Verify(pthread_cond_wait(condvar, mutex) == 0)
57 # define opr_cv_timedwait(condvar, mutex, timeout) \
58 pthread_cond_timedwait(condvar, mutex, timeout)
60 # define opr_cv_signal(condvar) \
61 opr_Verify(pthread_cond_signal(condvar) == 0)
63 # define opr_cv_broadcast(condvar) \
64 opr_Verify(pthread_cond_broadcast(condvar) == 0)
66 #endif /* OPENAFS_OPR_LOCK_H */