[linux][virt]USB passthrough技术分析

前言: USB passthrough让作者疑惑了一番~ 分析: 1,xml 根据libvirt的官方文档:http://libvirt.org/formatdomain.html#elementsHostDevSubsys 或者libvirt的docs:libvirt-3.0.0/docs

xml配置如上,在source中使用vendor id和product id。 2,qemu libvirt通过xml运算,计算出来qemu的参数,即“usb-host”类型设备。qemu-2.8.0-rc4/hw/usb/host-libusb.c中实现。作者选择的是 qemu-2.8.0-rc4的代码,依然不支持host的usb使用bus,port的方式。 3,libusb qemu中操作host的usb设备,通过libusb代码(https://sourceforge.net/projects/libusb/?source=typ_redirect)实现。libusb的代码,作者简单翻了一下,跑了一下测试代码,看了一下trace,大概意思就是分析/sys/bus/usb/devices目录下的文件/文件夹,进而可以打开usb设备,或者获取usb设备的attr;在用户态实现usb协议,则可以直接操作硬件。 usb的设备虚拟化,则和其他usb设备一样,guest中对usb设备进行操作,则qemu把对应的操作通过libusb透传给host的usb设备。 可见,usb的passthrough,并不是直接让guest直接访问host的usb设备。

4,lsusb

相关命令lsusb是一个不错的命令。

后记: 作者对usb协议并不熟悉,关于libusb的解释也未必完全准确。 请教过一个kernel高手的朋友,见我不会usb,还鄙视了我一下~囧

原文发布于微信公众号 - AlwaysGeek(gh_d0972b1eeb60)

原文发表时间:2017-03-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ShaoYL

iOS 组件化

35850
来自专栏程序员的知识天地

还在付费爱奇艺VIP?神级程序员教你用Python任意下!

我相信如果看电影的都知道,不管是爱奇艺还是腾讯视频还是优酷很多的电影电视都是需要VIP的,但是为了看这么一个电视或者电影开个vip又不是很划算。

31610
来自专栏领域驱动设计DDD实战进阶

1.WF 4.5在项目中直接使用的问题

最近公司需要在互联网产品后台进行精细化流程管理,开发了一个基于WF 4.5框架的流程引擎与图形化设计器,让流程真正的跑了起来。 基于Visual Studio ...

40080
来自专栏杨建荣的学习笔记

运维系统重构的设计思路

最近要对已有的运维平台做重构工作,为什么要做重构,主要还是因为各种各样的原因,需要对已有的问题改进,修复历史遗留包袱。这个时间迟早都会来到,还不如自己自觉一点,...

17020
来自专栏互联网高可用架构

分布式服务化系统一致性的“最佳实干”

23350
来自专栏子勰随笔

基于mdwiki使用Markdown实现的wiki

34050
来自专栏BestSDK

【SDK精选】OneAPM:玩转Browser Insight 性能指标

智选SDK为广大开发者推荐当下实用好玩的SDK,帮助开发者创造出有影响力的产品。每周一款精选SDK分布于社交分享、设计开发、云服务、支付平台等领域,分享激发创意...

28990
来自专栏Thinks

你的第一个渐进式网站应用(1)

渐进式网站应用程序是结合网站和应用程序中最好的体验。它们对于用户来说从浏览器标签中第一次访问,不需要安装是非常有用的。随着用户逐渐建立与应用程序的关系,它变得越...

10310
来自专栏腾讯移动品质中心TMQ的专栏

TBS三方SDK自动化探索

对于非宿主的合作伙伴来说,在TBS接入环节,“共享和下载内核”的能力是最重要的,它从根本上决定着APP是否能够使用预期的X5内核提供服务。一旦出现问题,会导致无...

42700
来自专栏微服务生态

跟我学分布式事务之2PC和3PC

在分布式系统中,为了保证数据的高可用,通常,我们会将数据保留多个副本(replica),这些副本会放置在不同的物理的机器上。为了对用户提供正确的增\删\改\差等...

10940

扫码关注云+社区

领取腾讯云代金券