aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulien Thierry <julien.thierry@arm.com>2019-03-07 08:36:04 +0000
committerWill Deacon <will.deacon@arm.com>2019-04-26 14:55:21 +0100
commit20b65266ce86e6253eac5813e285e3c30713fe2a (patch)
tree8962d8e8b2509cfbd6bc4e63b4a6399300b4c127
parent026fb59cb4e96c9997ab26b64c1332363fd0ce97 (diff)
downloadkvmtool-20b65266ce86e6253eac5813e285e3c30713fe2a.tar.gz
brlock: fix build with KVM_BRLOCK_DEBUG
Build breaks when using KVM_BRLOCK_DEBUG because the header was seamingly conceived to be included in a single .c file... Fix this by moving the definition of the read/write lock into the kvm struct. Reviewed-by: Andre Przywara <andre.przywara@arm.com> Signed-off-by: Julien Thierry <julien.thierry@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
-rw-r--r--include/kvm/brlock.h10
-rw-r--r--include/kvm/kvm.h4
-rw-r--r--kvm.c4
3 files changed, 12 insertions, 6 deletions
diff --git a/include/kvm/brlock.h b/include/kvm/brlock.h
index 29f72e0e..18622101 100644
--- a/include/kvm/brlock.h
+++ b/include/kvm/brlock.h
@@ -21,13 +21,11 @@
#include "kvm/rwsem.h"
-DECLARE_RWSEM(brlock_sem);
+#define br_read_lock(kvm) down_read(&(kvm)->brlock_sem);
+#define br_read_unlock(kvm) up_read(&(kvm)->brlock_sem);
-#define br_read_lock(kvm) down_read(&brlock_sem);
-#define br_read_unlock(kvm) up_read(&brlock_sem);
-
-#define br_write_lock(kvm) down_write(&brlock_sem);
-#define br_write_unlock(kvm) up_write(&brlock_sem);
+#define br_write_lock(kvm) down_write(&(kvm)->brlock_sem);
+#define br_write_unlock(kvm) up_write(&(kvm)->brlock_sem);
#else
diff --git a/include/kvm/kvm.h b/include/kvm/kvm.h
index 1edacfdf..7a738183 100644
--- a/include/kvm/kvm.h
+++ b/include/kvm/kvm.h
@@ -81,6 +81,10 @@ struct kvm {
int nr_disks;
int vm_state;
+
+#ifdef KVM_BRLOCK_DEBUG
+ pthread_rwlock_t brlock_sem;
+#endif
};
void kvm__set_dir(const char *fmt, ...);
diff --git a/kvm.c b/kvm.c
index d5249a0e..57c4ff98 100644
--- a/kvm.c
+++ b/kvm.c
@@ -160,6 +160,10 @@ struct kvm *kvm__new(void)
kvm->sys_fd = -1;
kvm->vm_fd = -1;
+#ifdef KVM_BRLOCK_DEBUG
+ kvm->brlock_sem = (pthread_rwlock_t) PTHREAD_RWLOCK_INITIALIZER;
+#endif
+
return kvm;
}