On Fri, 2007-11-02 at 05:36 -0500, Jerone Young wrote: > # HG changeset patch > # User Jerone Young <[EMAIL PROTECTED]> > # Date 1193996153 18000 > # Node ID 5900e2b0ebdee721ae651070fcd325363691e25a > # Parent 6ce27ddeb45df182e923060ae3abe699ce704ca3 > Move kvm_context to kvmctl.h > > This patch moves kvm_context from libkvm.c to kvm-context.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, PAGE_SIZE & PAGE_MASK > 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. > > 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,5 @@ > > LIBDIR := /lib64 > +CFLAGS += -m64 > +CFLAGS += -D__x86_64__
These shouldn't be needed since libkvm/Makefile is now including ../user/config.mak . (Questionable IMHO, but that's already committed. :) > diff --git a/libkvm/kvm-context.h b/libkvm/kvm-context.h > new file mode 100644 > --- /dev/null > +++ b/libkvm/kvm-context.h > @@ -0,0 +1,31 @@ > +#ifndef KVM_CONTEXT_H > +#define KVM_CONTEXT_H > + > +/** > + * \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 This doesn't work because kvm_memory_region, MAX_VCPUS, and KVM_MAX_NUM_MEM_REGIONS are undefined here. I don't think kvm_context needs its own header anyways, and combining it into the non-exported kvm-common.h will simplify things. > 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,17 @@ > +/* 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. > + */ > +#ifndef KVM_X86_H > +#define KVM_X86_H > + > +/* FIXME: share this number with kvm */ > +/* FIXME: or dynamically alloc/realloc regions */ > +#define KVM_MAX_NUM_MEM_REGIONS 8u > +#define MAX_VCPUS 4 These should be common until proven otherwise, so move into kvm-common.h. > +#define PAGE_SIZE 4096ul > +#define PAGE_MASK (~(PAGE_SIZE - 1)) > + > +#endif Userspace should never do this, and should always use getpagesize(2) instead. (I know it's not your fault.) Once you change those two things, kvm-x86.h disappears (unless you need to create it later in the series). -- Hollis Blanchard IBM Linux Technology Center ------------------------------------------------------------------------- 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