|
43 | 43 |
|
44 | 44 | #include <sys/param.h>
|
45 | 45 | #include <sys/bitops.h>
|
| 46 | +#include <sys/lock.h> |
46 | 47 | #include <sys/systm.h>
|
| 48 | + |
47 | 49 | #include <machine/cpufunc.h>
|
48 | 50 | #include <machine/specialreg.h>
|
49 | 51 |
|
|
236 | 238 | #define x86_cpuid(eax, regs) do_cpuid(eax, regs)
|
237 | 239 | #define x86_cpuid2(eax, ecx, regs) cpuid_count(eax, ecx, regs)
|
238 | 240 |
|
| 241 | +/* |
| 242 | + * Mutex lock |
| 243 | + */ |
| 244 | +#define kmutex_t struct lock |
| 245 | +#define mutex_init(lock, type, ipl) lockinit(lock, "nvmmmtx", 0, 0) |
| 246 | +#define mutex_destroy(lock) lockuninit(lock) |
| 247 | +#define mutex_enter(lock) lockmgr(lock, LK_EXCLUSIVE) |
| 248 | +#define mutex_exit(lock) lockmgr(lock, LK_RELEASE) |
| 249 | +#define mutex_owned(lock) (lockstatus(lock, curthread) == LK_EXCLUSIVE) |
| 250 | + |
| 251 | +/* |
| 252 | + * Reader/writer lock |
| 253 | + */ |
| 254 | +typedef enum krw_t { |
| 255 | + RW_READER = LK_SHARED, |
| 256 | + RW_WRITER = LK_EXCLUSIVE, |
| 257 | +} krw_t; |
| 258 | +#define krwlock_t struct lock |
| 259 | +#define rw_init(lock) lockinit(lock, "nvmmrw", 0, 0) |
| 260 | +#define rw_destroy(lock) lockuninit(lock) |
| 261 | +#define rw_enter(lock, op) lockmgr(lock, op) |
| 262 | +#define rw_exit(lock) lockmgr(lock, LK_RELEASE) |
| 263 | +#define rw_write_held(lock) (lockstatus(lock, curthread) == LK_EXCLUSIVE) |
| 264 | + |
239 | 265 | #endif /* _NVMM_COMPAT_H_ */
|
0 commit comments