- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
QEMU 设备模拟 - 码农故事
QEMU 设备模拟 mnstory.net 设备模拟目的 我们好像不会干一件事而毫无目的,就算不停刷微信朋友圈也是为了打发你无聊的时间。 其实最装 B 的回答是:设备模拟的目的就是模拟设备。这话是屁话,不过也能说明些什么, 确实是模拟设备,用软件的方式提供硬件设备具备的功能。 对于和PC 机交互的硬件设备,主要要干两件事,一是提供 IRQ 中断,二是响应IO 输入输 出。IO 包括 PIO/MMIO/DMA 等(DMA 算不算IO ?) 以i8254.c实现的pit为例,主要提供了IRQ注入和PIO响应,见初始化函数pit_initfn : static const MemoryRegionOps pit_ioport_ops = { .read = pit_ioport_read, .write = pit_ioport_write, .impl = { .min_access_size = 1, .max_access_size = 1, }, .endianness = DEVICE_LITTLE_ENDIAN, }; static int pit_initfn(PITCommonState *pit) { PITChannelState *s; s = pit-channels[0]; /* the timer 0 is connected to an IRQ */ //这里有个irq_timer,用于qemu_set_irq提供中断注入 s-irq_timer = qemu_new_timer_ns(vm_clock, pit_irq_timer, s); qdev_init_gpio_out(pit-dev.qdev, s-irq, 1); memory_region_init_io(pit-ioports, pit_ioport_ops, pit, pit, 4); qdev_init_gpio_in(pit-dev.qdev, pit_irq_control, 1); return 0; } 这里的 pit_ioport_ops,主要注册GUEST 操作系统读写 PIO 时候的回调函数。 模块注册 QEMU 要模拟模块那么多,以程序员的喜好,至少得来一套管理这些模拟设备模块的接口, 以示设计良好。 QEMU 将被模拟的模块分为了四类: typedef enum { MODULE_INIT_BLOCK, MODULE_INIT_MACHINE, MODULE_INIT_QAPI, MODULE_INIT_QOM, MODULE_INIT_MAX } module_init_type; BLOCK 比如磁盘 IO 就属于 BLOCK 类型,e.g: block_init(bdrv_qcow2_init); block_init(iscsi_block_init); MACHINE PC 虚 拟 machine_init(pc_machine_init); XEN 半 虚 拟 化 machine_init(xenpv_machine_init); MIPS 虚 拟 machine_init(mips_machine_init); QAPI QEMU GUEST AGENT 模块里面会执行QAPI 注册的回调 QOM QOM 树大枝多,儿孙满堂,应该是这里面最复杂的一个,我们重点介绍。 e.g: ObjectClass - PCIDeviceClass //显卡 type_init(cirrus_vga_register_types),网卡 type_init(rtl8139_register_types) IDEDeviceClass //IDE硬盘或CD-ROM type_init(ide_register_types) ISADeviceClass //鼠标键盘 type_init(i8042_register_typ
您可能关注的文档
- Press Release 媒体稿 克劳斯玛菲贝尔斯托夫为双螺杆挤出.PDF
- Presentación Masaaki Imai.ppt [Modo de.PDF
- Presentación de PowerPoint - 中国电子信息产业网-中国.ppt
- Preisliste Seite 5 - 网站首页.PDF
- PRODUCT CAMERA MODULE - 杭州信益科技有限公司.PDF
- ProSafe 简单网管交换机(GS116E 产品介绍.PDF
- PROTOTYPE.JS 1.4 版开发者手册 强烈推荐.PDF
- PT4101 - 微桥科技有限公司 Micro Bridge Technology.PDF
- PT4115 规格说明书 REV 1.PDF
- Professional in Multimedia Processing 信号传输处理专.PDF
- quantstrat R中的量化投资之路 - 统计之都 (Capital of.PDF
- QX2304 应用指导书.PDF
- R134a 安全技术说明书 MSDS.PDF
- Red Hat Enterprise Linux 5 DM 多 路 径.PDF
- rend o ianostic Ultrasound - 画像とITの医療情報ポータ ….PDF
- Revised 20070912 永恩國際集團有限公司.PDF
- RF捷变收发器 - Mixed-signal and digital signal.PDF
- RT- IMX6核心板.PDF
- RTB 大势所趋,算法和数据是核心.PDF
- RTU 路灯监控设备产品规格书 - 鸣志 - moving in better.PDF
文档评论(0)