Return vm_lock directly rather than through an argument.
Change-Id: I3acc96b32574c3a443210434cb17fafff46e430e
diff --git a/inc/hf/vm.h b/inc/hf/vm.h
index 37dd437..a6bda8b 100644
--- a/inc/hf/vm.h
+++ b/inc/hf/vm.h
@@ -95,5 +95,5 @@
bool vm_init(uint32_t vcpu_count, struct mpool *ppool, struct vm **new_vm);
uint32_t vm_get_count(void);
struct vm *vm_get(uint32_t id);
-void vm_lock(struct vm *vm, struct vm_locked *locked);
+struct vm_locked vm_lock(struct vm *vm);
void vm_unlock(struct vm_locked *locked);
diff --git a/src/api.c b/src/api.c
index ecc45b3..16af2d0 100644
--- a/src/api.c
+++ b/src/api.c
@@ -614,7 +614,7 @@
return -1;
}
- vm_lock(vm, &locked);
+ locked = vm_lock(vm);
/* We only allow these to be setup once. */
if (vm->mailbox.send || vm->mailbox.recv) {
@@ -964,7 +964,7 @@
}
/* Check if there are outstanding notifications from given vm. */
- vm_lock(vm, &locked);
+ locked = vm_lock(vm);
entry = api_fetch_waiter(locked);
vm_unlock(&locked);
@@ -1003,7 +1003,7 @@
struct vm_locked locked;
int64_t ret;
- vm_lock(vm, &locked);
+ locked = vm_lock(vm);
switch (vm->mailbox.state) {
case MAILBOX_STATE_EMPTY:
ret = 0;
diff --git a/src/vm.c b/src/vm.c
index f2bbe78..e136e84 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -87,10 +87,15 @@
/**
* Locks the given VM and updates `locked` to hold the newly locked vm.
*/
-void vm_lock(struct vm *vm, struct vm_locked *locked)
+struct vm_locked vm_lock(struct vm *vm)
{
+ struct vm_locked locked = {
+ .vm = vm,
+ };
+
sl_lock(&vm->lock);
- locked->vm = vm;
+
+ return locked;
}
/**