标签:service qemud pipe init goldfish android QEMU 设备
1. QEMU pipe介绍
Qemu-pipe是一个通用的虚拟设备,完成guest OS和emulator的通信功能。它为通信提供了四种服务:
- Tcp
- Unix
- Opengles
- Qemud
Qemud也提供了一些子服务
- "gsm" service
- "gps" service
- "hw-control" / "control" service
- "sensors" service
传输数据格式如下:
- pipe:<name>
- pipe:<name>:<arguments>
Qemud service信息:
- pipe:qemud:<arguments>
数据流向分析:
QEMU pipe和goldfish pipe关系如下图
2. goldfish pipe初始化
文件:external\qemu\android-qemu2-glue\qemu-setup.cpp
main_impl qemu_android_emulation_early_setup qemu_android_pipe_init goldfish_pipe_set_service_ops //goldfishpipe对androidpipe service的调用 android_pipe_set_hw_funcs //androidpipe service对goldfishpipe的调用 android_pipe_set_hw_virtio_funcs android::AndroidPipe::initThreading //启动androidpipe服务, //设置定时器调用performDeviceOperation
qemud初始化
qemu侧
main_impl qemu_android_emulation_early_setup android_qemu2_qemud_init android_qemud_get_serial_line android_qemud_init _android_qemud_serial_init //老式接口,为适应guest操作 _android_qemud_pipe_init //androidpipe中添加qemud服务,和qemud service的调用函数
guest侧
文件:drivers\platform\goldfish\goldfish_pipe.c module_platform_driver(goldfish_pipe_driver) goldfish_pipe_probe devm_ioremap goldfish_pipe_device_v2_init init_miscdevice
最终会在guest中产生一个设备:
虚拟机内部,通过读写该设备与emulator通信;qemu侧注册了对应的事件,发送给对应的主机侧设备或模拟设备。
使用goldfish_pipe通信的进程信息如下:
标签:service,qemud,pipe,init,goldfish,android,QEMU,设备 来源: https://www.cnblogs.com/edver/p/16255025.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。