Zhang, Xiantao wrote:
>>> For driver/kvm/kvm.h,  I have a proposal before in mailing list.  In
>>> my proposal, we can split x86-specific code of kvm.h into current
>>> x86.h, and make code in kvm.h as common. Then, we rename kvm.h to
>>> kvm_comm.h, and also rename x86.h to kvm-x86.h, and meantime
>>> kvm-x86.h would include kvm_comm.h. At compile time, we can make
>>> symbol link for changing kvm-x86.h to kvm.h.  So, it should be more
>>> portable, because different archs can define its kvm-$arch.h to hold
>>> its arch-specific code. 
>>>
>>>       
>> I prefer not to have dynamic symlinks, it's too tricky.
>>
>> What's wrong with just the first part, x86.h which includes kvm.h?
>> x86.c will include x86.h, and arch neutral files will include kvm.h.
>>     
>
> I think it may have issues. For example, where do we put struct
> kvm_vcpu, and struct kvm? If we place them in x86.h, then kvm_main.c and
> other neutral files can't reach it.  If we put them in kvm.h, how to
> handle arch-specific fields in them ?
>   

Someone (I forget who) suggested using the same trick we use for vmx and 
svm.  We nest as follows:

struct vcpu_vmx {
   struct vcpu_x86 {
        struct kvm_vcpu {
             // common fields;
        } vcpu;
        // x86 specific fields;
   } x86;
   // vmx specific fields;
};

Allocation is done by arch specific code which allocates the outermost 
structure.  Common code sees only kvm_vcpu and its fields.  When it 
calls x86 arch hooks, they use the vcpu_x86() macro (which is a call to 
container_of()) to gain access to x86 specific fields.  When x86 code 
calls vmx specific code (using kvm_x86_ops), that uses vcpu_vmx() to 
gain access to the vmx specific fields.  Any similarity to a language 
derived from C, living or dead, is purely coincidental and unintended.

-- 
error compiling committee.c: too many arguments to function


-------------------------------------------------------------------------
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

Reply via email to