diff options
author | neel <neel@FreeBSD.org> | 2012-10-12 18:32:44 +0000 |
---|---|---|
committer | neel <neel@FreeBSD.org> | 2012-10-12 18:32:44 +0000 |
commit | e3e8a520e280f32230da3ddfa4c5260fea0e15a1 (patch) | |
tree | 0bfaa9a4adf32c0b651f9959696d1a24545e8bd8 /sys/amd64/include/vmm.h | |
parent | 4829fce72f3af3b96bc018ac20f556ee33b7f44f (diff) | |
download | FreeBSD-src-e3e8a520e280f32230da3ddfa4c5260fea0e15a1.zip FreeBSD-src-e3e8a520e280f32230da3ddfa4c5260fea0e15a1.tar.gz |
Provide per-vcpu locks instead of relying on a single big lock.
This also gets rid of all the witness.watch warnings related to calling
malloc(M_WAITOK) while holding a mutex.
Reviewed by: grehan
Diffstat (limited to 'sys/amd64/include/vmm.h')
-rw-r--r-- | sys/amd64/include/vmm.h | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/sys/amd64/include/vmm.h b/sys/amd64/include/vmm.h index be22eec..4dfdd04 100644 --- a/sys/amd64/include/vmm.h +++ b/sys/amd64/include/vmm.h @@ -130,19 +130,24 @@ int vmm_is_pptdev(int bus, int slot, int func); void *vm_iommu_domain(struct vm *vm); -#define VCPU_STOPPED 0 -#define VCPU_RUNNING 1 -void vm_set_run_state(struct vm *vm, int vcpu, int running); -int vm_get_run_state(struct vm *vm, int vcpu, int *hostcpu); +enum vcpu_state { + VCPU_IDLE, + VCPU_RUNNING, + VCPU_CANNOT_RUN, +}; -void *vcpu_stats(struct vm *vm, int vcpu); +int vcpu_set_state(struct vm *vm, int vcpu, enum vcpu_state state); +enum vcpu_state vcpu_get_state(struct vm *vm, int vcpu); static int __inline -vcpu_is_running(struct vm *vm, int vcpu, int *hostcpu) +vcpu_is_running(struct vm *vm, int vcpu) { - return (vm_get_run_state(vm, vcpu, hostcpu) == VCPU_RUNNING); + return (vcpu_get_state(vm, vcpu) == VCPU_RUNNING); } +void *vcpu_stats(struct vm *vm, int vcpu); +void vm_interrupt_hostcpu(struct vm *vm, int vcpu); + #endif /* KERNEL */ #define VM_MAXCPU 8 /* maximum virtual cpus */ |