#ifndef _DEV_VMM_DEV_H_
#define _DEV_VMM_DEV_H_
#include <sys/types.h>
#include <sys/ioccom.h>
#include <machine/vmm_dev.h>
#include <dev/vmm/vmm_param.h>
#ifdef _KERNEL
struct thread;
struct vm;
struct vcpu;
int vmm_modinit(void);
int vmm_modcleanup(void);
int vmmdev_machdep_ioctl(struct vm *vm, struct vcpu *vcpu, u_long cmd,
caddr_t data, int fflag, struct thread *td);
struct vmmdev_ioctl {
unsigned long cmd;
#define VMMDEV_IOCTL_SLOCK_MEMSEGS 0x01
#define VMMDEV_IOCTL_XLOCK_MEMSEGS 0x02
#define VMMDEV_IOCTL_LOCK_ONE_VCPU 0x04
#define VMMDEV_IOCTL_LOCK_ALL_VCPUS 0x08
#define VMMDEV_IOCTL_ALLOC_VCPU 0x10
#define VMMDEV_IOCTL_MAYBE_ALLOC_VCPU 0x20
#define VMMDEV_IOCTL_PPT 0x40
int flags;
};
#define VMMDEV_IOCTL(_cmd, _flags) { .cmd = (_cmd), .flags = (_flags) }
extern const struct vmmdev_ioctl vmmdev_machdep_ioctls[];
extern const size_t vmmdev_machdep_ioctl_count;
#define VM_MAXCPU MIN(0xffff - 1, CPU_SETSIZE)
extern u_int vm_maxcpu;
#endif
#define VMMCTL_CREATE_DESTROY_ON_CLOSE 0x1
#define VMMCTL_FLAGS_MASK (VMMCTL_CREATE_DESTROY_ON_CLOSE)
struct vmmctl_vm_create {
char name[VM_MAX_NAMELEN + 1];
uint32_t flags;
int reserved[15];
};
struct vmmctl_vm_destroy {
char name[VM_MAX_NAMELEN + 1];
int reserved[16];
};
#define VMMCTL_VM_CREATE _IOWR('V', 0, struct vmmctl_vm_create)
#define VMMCTL_VM_DESTROY _IOWR('V', 1, struct vmmctl_vm_destroy)
#endif