# HG changeset patch # User Jerone Young <[EMAIL PROTECTED]> # Date 1194367624 21600 # Node ID dc86d46f1d10fd53c332f1cb7c2f1e880616694a # Parent 6ce27ddeb45df182e923060ae3abe699ce704ca3 Move kvm_context to kvm-common.h & add CFLAGS to config-* filese
This patch moves kvm_context from libkvm.c to kvm-common.h. This is so other files are able to see members of kvm_context. Also you should allways declare stuff like this in a header anyway. Also moved are delcrations MAX_VCPU, KVM_MAX_NUM_MEM_REGIONS to kvm-common.h. While PAGE_SIZE & PAGE_MASK where moved to kvm-x86.h. The idea here is kvm-$(ARCH).h will be headers for interal use by libkvm. Headers name libkvm-$(ARCH) will be functions that are arch specific that will be exposed to a user. Also apart of this patch is added CFLAGS to the config-$(ARCH).mak files. Really instead there needed to be a unified make file for libkvm & user directory. But for now this fixes the issue Signed-off-by: Jerone Young <[EMAIL PROTECTED]> diff --git a/libkvm/config-i386.mak b/libkvm/config-i386.mak --- a/libkvm/config-i386.mak +++ b/libkvm/config-i386.mak @@ -1,2 +1,4 @@ LIBDIR := /lib +CFLAGS += -m32 +CFLAGS += -D__i386__ diff --git a/libkvm/config-x86_64.mak b/libkvm/config-x86_64.mak --- a/libkvm/config-x86_64.mak +++ b/libkvm/config-x86_64.mak @@ -1,2 +1,4 @@ LIBDIR := /lib64 +CFLAGS += -m64 +CFLAGS += -D__x86_64__ diff --git a/libkvm/kvm-common.h b/libkvm/kvm-common.h new file mode 100644 --- /dev/null +++ b/libkvm/kvm-common.h @@ -0,0 +1,52 @@ +/* + * This header is for functions & variables that will ONLY be + * used inside libkvm. + * + * derived from libkvm.c + * + * Copyright (C) 2006 Qumranet, Inc. + * + * Authors: + * Avi Kivity <[EMAIL PROTECTED]> + * Yaniv Kamay <[EMAIL PROTECTED]> + * + * This work is licensed under the GNU LGPL license, version 2. + */ + +#ifndef KVM_COMMON_H +#define KVM_COMMON_H + +/* FIXME: share this number with kvm */ +/* FIXME: or dynamically alloc/realloc regions */ +#define KVM_MAX_NUM_MEM_REGIONS 8u +#define MAX_VCPUS 4 + + +/** + * \brief The KVM context + * + * The verbose KVM context + */ + +struct kvm_context { + /// Filedescriptor to /dev/kvm + int fd; + int vm_fd; + int vcpu_fd[MAX_VCPUS]; + struct kvm_run *run[MAX_VCPUS]; + /// Callbacks that KVM uses to emulate various unvirtualizable functionality + struct kvm_callbacks *callbacks; + void *opaque; + /// A pointer to the memory used as the physical memory for the guest + void *physical_memory; + /// is dirty pages logging enabled for all regions or not + int dirty_pages_log_all; + /// memory regions parameters + struct kvm_memory_region mem_regions[KVM_MAX_NUM_MEM_REGIONS]; + /// do not create in-kernel irqchip if set + int no_irqchip_creation; + /// in-kernel irqchip status + int irqchip_in_kernel; +}; + +#endif diff --git a/libkvm/kvm-x86.h b/libkvm/kvm-x86.h new file mode 100644 --- /dev/null +++ b/libkvm/kvm-x86.h @@ -0,0 +1,26 @@ +/* + * This header is for functions & variables that will ONLY be + * used inside libkvm for x86. + * THESE ARE NOT EXPOSED TO THE USER AND ARE ONLY FOR USE + * WITHIN LIBKVM. + * + * derived from libkvm.c + * + * Copyright (C) 2006 Qumranet, Inc. + * + * Authors: + * Avi Kivity <[EMAIL PROTECTED]> + * Yaniv Kamay <[EMAIL PROTECTED]> + * + * This work is licensed under the GNU LGPL license, version 2. + */ + +#ifndef KVM_X86_H +#define KVM_X86_H + +#include "kvm-common.h" + +#define PAGE_SIZE 4096ul +#define PAGE_MASK (~(PAGE_SIZE - 1)) + +#endif diff --git a/libkvm/libkvm.c b/libkvm/libkvm.c --- a/libkvm/libkvm.c +++ b/libkvm/libkvm.c @@ -37,43 +37,14 @@ #include "libkvm.h" #include "kvm-abi-10.h" +#if defined(__x86_64__) || defined(__i386__) +#include "kvm-x86.h" +#endif + static int kvm_abi = EXPECTED_KVM_API_VERSION; -#define PAGE_SIZE 4096ul -#define PAGE_MASK (~(PAGE_SIZE - 1)) - -/* FIXME: share this number with kvm */ -/* FIXME: or dynamically alloc/realloc regions */ -#define KVM_MAX_NUM_MEM_REGIONS 8u int free_slots[KVM_MAX_NUM_MEM_REGIONS]; unsigned long phys_addr_slots[KVM_MAX_NUM_MEM_REGIONS]; -#define MAX_VCPUS 4 - -/** - * \brief The KVM context - * - * The verbose KVM context - */ -struct kvm_context { - /// Filedescriptor to /dev/kvm - int fd; - int vm_fd; - int vcpu_fd[MAX_VCPUS]; - struct kvm_run *run[MAX_VCPUS]; - /// Callbacks that KVM uses to emulate various unvirtualizable functionality - struct kvm_callbacks *callbacks; - void *opaque; - /// A pointer to the memory used as the physical memory for the guest - void *physical_memory; - /// is dirty pages logging enabled for all regions or not - int dirty_pages_log_all; - /// memory regions parameters - struct kvm_memory_region mem_regions[KVM_MAX_NUM_MEM_REGIONS]; - /// do not create in-kernel irqchip if set - int no_irqchip_creation; - /// in-kernel irqchip status - int irqchip_in_kernel; -}; static void init_slots() { diff --git a/libkvm/libkvm.h b/libkvm/libkvm.h --- a/libkvm/libkvm.h +++ b/libkvm/libkvm.h @@ -1,4 +1,4 @@ -/** \file kvmctl.h +/** \file libkvm.h * libkvm API */ ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel