前言
最近,由于公司将qemu从410升级到620。我们对qemu的一些功能定制也需要和入到620版本。其中我负责的usb外设这部分功能,也需要和入,涉及到620的初始化流程修改,在这里作简单记录。
添加一个模块
- 找到对应目录的meson.build文件,修改配置文件
最简单的模块添加
1 | your_moule = ss.source_set() |
- 在C代码中要有如下代码,声明你的模块
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15static const TypeInfo usbredir_dev_info = {
.name = TYPE_USB_REDIR,
.parent = TYPE_USB_DEVICE,
.instance_size = sizeof(USBRedirDevice),
.class_init = usbredir_class_initfn,
.instance_init = usbredir_instance_init,
};
module_obj(TYPE_USB_REDIR);
static void usbredir_register_types(void)
{
type_register_static(&usbredir_dev_info);
}
type_init(usbredir_register_types)
有配置依赖的模块添加
- 首先 需要在./scripts/meson-buildoptions.sh中添加你的配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14...
meson_options_help() {
...
printf "%s\n" ' YourConf YourConf support'
...
}
...
_meson_option_parse() {
...
--enable-YourConf) printf "%s" -DYourConfMacro=enabled ;;
--disable-YourConf) printf "%s" -DYourConfMacro=disabled ;;
...
}
... - 然后在meson.build中添加宏检测
1
2
3your_moule = ss.source_set()
your_moule.add(when: 'YourConfMacro', if_ture:[files(your_module_file1, your_module_file2)])
modules += { 'your_moule_name': your_moule }
有动态库依赖的模块添加
首先需要在/meson.build中,添加库的引入
1
2
3
4YourLib1 = dependency('YourLib1Name', required: get_option('YourConf'),
version: '>=0.0', method: 'pkg-config',
kwargs: static_kwargs)举例如下,libuvcli就是 YourLib1Name, 0.0.1就是version
1
2
3
4
5
6
7
8
9[系统未激活][root@localhost qemu-kvm-ksvd]# pkg-config --list-all | grep uvc
libuvccli libuvccli - uvc proxy library
libuvcsrv libuvcsrv - uvc proxy srv library
[系统未激活][root@localhost qemu-kvm-ksvd]# pkg-config --libs libuvccli
-L/usr/local/lib -luvccli
[系统未激活][root@localhost qemu-kvm-ksvd]# pkg-config --cflags libuvccli
-I/usr/local/include
[系统未激活][root@localhost qemu-kvm-ksvd]# pkg-config --modversion libuvccli
0.0.1然后在meson.build中添加lib判断,并把lib引入到module中
1
2
3
4
5if your_lib.found()
your_moule = ss.source_set()
your_moule.add([your_lib, files(your_module_file1, your_module_file2)])
modules += { 'your_moule_name': your_moule }
endif
- 本文作者: crazyboy
- 本文链接: http://crazyboy.www.crazyboy.info/blog/blog/2023/05/25/it/linux/qemu/qemu620-moduleadd/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!