标签:str 将不 drag 包含 gre pid_t extern exp com
KVM一共包含了三个内核模块,kvm_intel.ko,kvm_amd.ko,kvm.ko。其中两个重要文件x86.c和vmx.c在编译后分别会生成kvm_intel.ko和kvm.ko两个内核模块,所以在两个文件当中定义的同一个结构体,在另一个文件中不能共用,因为两者处于不同内核模块。举例说明
在kvm_host.h中定义结构体数组如下:
#define table_len 10000 struct vm_task_table { unsigned long vm_task_cr3; pid_t vm_task_pid; char vm_task_name[16]; }vm_table[table_len];
现在想在x86.c和vmx.c中共用该结构体,一个向结构体数组写入值,一个读出值。定义如下:
x86.c
extern struct vm_task_table vm_table[table_len];
vmx.c
extern struct vm_task_table vm_table[table_len];
首先且不说两个文件的结构体是否是同一个的问题。在编译过程中,将会报错如下:
#define table_len 10000 struct vm_task_table { unsigned long vm_task_cr3; pid_t vm_task_pid; char vm_task_name[16]; };
#define table_len 10000 struct vm_task_table { unsigned long vm_task_cr3; pid_t vm_task_pid; char vm_task_name[16]; };
标签:str 将不 drag 包含 gre pid_t extern exp com
原文地址:http://www.cnblogs.com/scu-cjx/p/6220575.html