|
|
1.1 ! root 1: #ifndef __PV_H ! 2: #define __PV_H ! 3: ! 4: #include "util.h" ! 5: ! 6: /* This CPUID returns the signature 'KVMKVMKVM' in ebx, ecx, and edx. It ! 7: * should be used to determine that a VM is running under KVM. ! 8: */ ! 9: #define KVM_CPUID_SIGNATURE 0x40000000 ! 10: ! 11: static inline int kvm_para_available(void) ! 12: { ! 13: unsigned int eax, ebx, ecx, edx; ! 14: char signature[13]; ! 15: ! 16: cpuid(KVM_CPUID_SIGNATURE, &eax, &ebx, &ecx, &edx); ! 17: memcpy(signature + 0, &ebx, 4); ! 18: memcpy(signature + 4, &ecx, 4); ! 19: memcpy(signature + 8, &edx, 4); ! 20: signature[12] = 0; ! 21: ! 22: if (strcmp(signature, "KVMKVMKVM") == 0) ! 23: return 1; ! 24: ! 25: return 0; ! 26: } ! 27: ! 28: #define QEMU_CFG_SIGNATURE 0x00 ! 29: #define QEMU_CFG_ID 0x01 ! 30: #define QEMU_CFG_UUID 0x02 ! 31: #define QEMU_CFG_NUMA 0x0d ! 32: #define QEMU_CFG_BOOT_MENU 0x0e ! 33: #define QEMU_CFG_MAX_CPUS 0x0f ! 34: #define QEMU_CFG_FILE_DIR 0x19 ! 35: #define QEMU_CFG_ARCH_LOCAL 0x8000 ! 36: #define QEMU_CFG_ACPI_TABLES (QEMU_CFG_ARCH_LOCAL + 0) ! 37: #define QEMU_CFG_SMBIOS_ENTRIES (QEMU_CFG_ARCH_LOCAL + 1) ! 38: #define QEMU_CFG_IRQ0_OVERRIDE (QEMU_CFG_ARCH_LOCAL + 2) ! 39: ! 40: extern int qemu_cfg_present; ! 41: ! 42: void qemu_cfg_port_probe(void); ! 43: int qemu_cfg_show_boot_menu(void); ! 44: void qemu_cfg_get_uuid(u8 *uuid); ! 45: int qemu_cfg_irq0_override(void); ! 46: u16 qemu_cfg_acpi_additional_tables(void); ! 47: u16 qemu_cfg_next_acpi_table_len(void); ! 48: void *qemu_cfg_next_acpi_table_load(void *addr, u16 len); ! 49: u16 qemu_cfg_smbios_entries(void); ! 50: size_t qemu_cfg_smbios_load_field(int type, size_t offset, void *addr); ! 51: int qemu_cfg_smbios_load_external(int type, char **p, unsigned *nr_structs, ! 52: unsigned *max_struct_size, char *end); ! 53: int qemu_cfg_get_numa_nodes(void); ! 54: void qemu_cfg_get_numa_data(u64 *data, int n); ! 55: u16 qemu_cfg_get_max_cpus(void); ! 56: ! 57: typedef struct QemuCfgFile { ! 58: u32 size; /* file size */ ! 59: u16 select; /* write this to 0x510 to read it */ ! 60: u16 reserved; ! 61: char name[56]; ! 62: } QemuCfgFile; ! 63: ! 64: u16 qemu_cfg_first_file(QemuCfgFile *entry); ! 65: u16 qemu_cfg_next_file(QemuCfgFile *entry); ! 66: u32 qemu_cfg_read_file(QemuCfgFile *entry, void *dst, u32 maxlen); ! 67: ! 68: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.