File:  [Qemu by Fabrice Bellard] / qemu / kvm.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 16:50:25 2018 UTC (3 years, 1 month ago) by root
Branches: qemu, MAIN
CVS tags: qemu0102, qemu0101, qemu0100, HEAD
qemu 0.10.0

    1: /*
    2:  * QEMU KVM support
    3:  *
    4:  * Copyright IBM, Corp. 2008
    5:  *
    6:  * Authors:
    7:  *  Anthony Liguori   <aliguori@us.ibm.com>
    8:  *
    9:  * This work is licensed under the terms of the GNU GPL, version 2 or later.
   10:  * See the COPYING file in the top-level directory.
   11:  *
   12:  */
   13: 
   14: #ifndef QEMU_KVM_H
   15: #define QEMU_KVM_H
   16: 
   17: #include "config.h"
   18: 
   19: #ifdef CONFIG_KVM
   20: extern int kvm_allowed;
   21: 
   22: #define kvm_enabled() (kvm_allowed)
   23: #else
   24: #define kvm_enabled() (0)
   25: #endif
   26: 
   27: struct kvm_run;
   28: 
   29: /* external API */
   30: 
   31: int kvm_init(int smp_cpus);
   32: 
   33: int kvm_init_vcpu(CPUState *env);
   34: int kvm_sync_vcpus(void);
   35: 
   36: int kvm_cpu_exec(CPUState *env);
   37: 
   38: void kvm_set_phys_mem(target_phys_addr_t start_addr,
   39:                       ram_addr_t size,
   40:                       ram_addr_t phys_offset);
   41: 
   42: void kvm_physical_sync_dirty_bitmap(target_phys_addr_t start_addr, target_phys_addr_t end_addr);
   43: 
   44: int kvm_log_start(target_phys_addr_t phys_addr, target_phys_addr_t len);
   45: int kvm_log_stop(target_phys_addr_t phys_addr, target_phys_addr_t len);
   46: 
   47: int kvm_has_sync_mmu(void);
   48: 
   49: int kvm_coalesce_mmio_region(target_phys_addr_t start, ram_addr_t size);
   50: int kvm_uncoalesce_mmio_region(target_phys_addr_t start, ram_addr_t size);
   51: 
   52: /* internal API */
   53: 
   54: struct KVMState;
   55: typedef struct KVMState KVMState;
   56: 
   57: int kvm_ioctl(KVMState *s, int type, ...);
   58: 
   59: int kvm_vm_ioctl(KVMState *s, int type, ...);
   60: 
   61: int kvm_vcpu_ioctl(CPUState *env, int type, ...);
   62: 
   63: /* Arch specific hooks */
   64: 
   65: int kvm_arch_post_run(CPUState *env, struct kvm_run *run);
   66: 
   67: int kvm_arch_handle_exit(CPUState *env, struct kvm_run *run);
   68: 
   69: int kvm_arch_pre_run(CPUState *env, struct kvm_run *run);
   70: 
   71: int kvm_arch_get_registers(CPUState *env);
   72: 
   73: int kvm_arch_put_registers(CPUState *env);
   74: 
   75: int kvm_arch_init(KVMState *s, int smp_cpus);
   76: 
   77: int kvm_arch_init_vcpu(CPUState *env);
   78: 
   79: #endif

unix.superglobalmegacorp.com