qemu的usb前后端处理
1、qemu命令
-chardev 'spicevmc,id=usbredirchardev0,name=usbredir' \-device 'usb-redir,chardev=usbredirchardev0,id=usbredirdev0,bus=xhci.0,port=3' \
2、后端
#define SUBTYPE_USBREDIR "usbredir"
static int
spice_server_char_device_add_interface(SpiceServer *reds, SpiceBaseInstance *sin)
{
...
else if (strcmp(char_device->subtype, SUBTYPE_USBREDIR) == 0) {
dev_state = spicevmc_device_connect(reds, char_device, SPICE_CHANNEL_USBREDIR);
}
...
}
3、前端
#define TYPE_USB_REDIR "usb-redir"
#define TYPE_USB_DEVICE "usb-device"
static 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);
}