您的位置:首页 > 其它

实现Xen半虚拟化环境下前后端设备的注册(一)

2015-11-24 21:07 309 查看
前言

在Xen 半虚拟环境下增加新的设备,首先需要将新设备进行注册,前后端设备的注册可通过3步完成。

v 对配置文件进行解析,获取虚拟设备的信息

v 根据获取的虚拟设备信息将设备写入到XenStore上

v XenBus遍历XenStore目录,将前后端设备注册到XenBus总线

备注:前后端设备既可以在XenBus初始化时加载,也可以通过Hotplug的方式加载。虚拟机启动时会初始化XenBus总线,在初始化过程中将遍历XenStore读取所有前端设备信息,然后注册前端设备到XenBus总线,后端设备则通过Hotplug方式注册到XenBus总线。

具体实现过程如下:

(一)解析配置文件,获取自定义设备信息
配置文件中关于自定义设备的信息如下

mydevice=[‘example=zxm’]

在之前的博客中提到过配置文件的编写,可参考博客:/article/8909522.html

配置文件中虚拟机的配置信息是由一条条包含等号的字符串表示,等号左边代表配置项,等号右边代表选项信息。对配置文件的解决,就是将配置文件中的这些字符串进行提取,然后将提取到的信息保存到配置文件字典中,格式为键值对。

接下来就是代码追踪阶段了,关于Xen源码分析的资料网上很少,所以我通过一层层的追踪代码,最终找到了正确解析配置文件的方法。

首先从创建半虚拟机命令入手:xl create myexample -c

1. Xl_cmdtable.c

查看cmdtable: main_create( )函数用来实现xl create 命令

2. Xl_cmdimpl.c

main_create( ):位于Xl_cmdimpl.c

v
定义一个libxl_domain_config 类型变量 d_config;

n
Libxl_domain_config_init:

n
Libxl_domain_create_info

n
rc = create_domain( );

create_domain( ):

v
初始化配置文件变量:

n
Libxl_domain_config_init()

3. _libxl_types.C

Libxl_domain_config_init(libxl_domain_config *p):

v
Libxl_domain_config 在_libxl_types.h中定义

n
typedef struct libxl_domain_config{

Libxl_domain_create_info c_info;

Libxl_domain_build_info b_info;

Int num_disks;

Libxl_device_disk *disks;

......

//添加自定义设备mydevice;

int num_mydevices;

libxl_device_mydevice *mydevices;

......

}

v
分别初始化libxl_domain_create_info c_info、libxl_domain_build_info b_info;

n
Lib_domain_create_info_init(p->c_info);

n
Libxl_domain_build_info_init(p->b_info);

4. 回到Xl_cmdimpl.C

Parse_config_data():

v 添加XLU_ConfigList *mydevices;

v 添加解析代码

If(!Xlu_cfg_get_list(config,”disk”,&vbds,0,0)){

........

//解析代码

buf=xlu_cfg_get_listitem(mydevice,d_config->num_mydevice);

......

d_config->mydevice = (libxl_device_mydevice *)realloc(d_config->mydevices,sizeof(libxl_device_mydevice)*(d_config->num_mydevices+1));

libxl_device_mydevice_init(mydevice);

p=strtok(buf2,",");

......

}

回到create_domain():

Start:

ret=libxl_domain_create_new(...);

5、libxl_create.c

do_domain_create(.....);

init_domain_create(......);

至此,配置文件的解析结束。接下来是将介绍如何将设备信息写入Xenstore。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: