diff --git a/include/kvm/brlock.h b/include/kvm/brlock.h index 2e2e0f8..bd1d882 100644 --- a/include/kvm/brlock.h +++ b/include/kvm/brlock.h @@ -17,9 +17,25 @@ #define barrier() __asm__ __volatile__("": : :"memory") #endif +#ifdef KVM_BRLOCK_DEBUG + +#include "kvm/rwsem.h" + +DECLARE_RWSEM(brlock_sem); + +#define br_read_lock() down_read(&brlock_sem); +#define br_read_unlock() up_read(&brlock_sem); + +#define br_write_lock() down_write(&brlock_sem); +#define br_write_unlock() up_write(&brlock_sem); + +#else + #define br_read_lock() barrier() #define br_read_unlock() barrier() #define br_write_lock() kvm__pause() #define br_write_unlock() kvm__continue() #endif + +#endif