2 * Copyright 2000, International Business Machines Corporation and others.
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
11 * rx_kmutex.h - mutex and condition variable macros for kernel environment.
13 * Linux implementation.
14 * This are noops until such time as the kernel no longer has a global lock.
19 #include "rx/rx_kernel.h" /* for osi_Panic() */
21 #define RX_ENABLE_LOCKS 1
23 #ifndef _LINUX_CODA_FS_I
24 #define _LINUX_CODA_FS_I
25 struct coda_inode_info {
28 #include <linux/version.h>
29 #include <linux/wait.h>
30 #include <linux/sched.h>
31 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
32 #include <linux/mutex.h>
34 #include <asm/semaphore.h>
37 typedef struct afs_kmutex {
38 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
46 #ifndef set_current_state
47 #define set_current_state(X) current->state=X
50 typedef struct afs_kcondvar {
52 #if defined(AFS_LINUX24_ENV)
53 wait_queue_head_t waitq;
55 struct wait_queue *waitq;
60 MUTEX_ISMINE(afs_kmutex_t * l)
62 return l->owner == current->pid;
65 #define MUTEX_INIT(a,b,c,d) afs_mutex_init(a)
66 #define MUTEX_DESTROY(a)
67 #define MUTEX_ENTER afs_mutex_enter
68 #define MUTEX_TRYENTER afs_mutex_tryenter
69 #define MUTEX_EXIT afs_mutex_exit
71 #if defined(AFS_LINUX24_ENV)
72 #define CV_INIT(cv,b,c,d) do { (cv)->seq = 0; init_waitqueue_head(&(cv)->waitq); } while (0)
74 #define CV_INIT(cv,b,c,d) do { (cv)->seq = 0; init_waitqueue(&(cv)->waitq); } while (0)
76 #define CV_DESTROY(cv)
77 #define CV_WAIT_SIG(cv, m) afs_cv_wait(cv, m, 1)
78 #define CV_WAIT(cv, m) afs_cv_wait(cv, m, 0)
79 #define CV_TIMEDWAIT afs_cv_timedwait
81 #define CV_SIGNAL(cv) do { ++(cv)->seq; wake_up(&(cv)->waitq); } while (0)
82 #if defined(AFS_LINUX24_ENV)
83 #define CV_BROADCAST(cv) do { ++(cv)->seq; wake_up_all(&(cv)->waitq); } while (0)
85 #define CV_BROADCAST(cv) do { ++(cv)->seq; wake_up(&(cv)->waitq); } while (0)
88 #endif /* RX_KMUTEX_H_ */