今天聊聊virtio (半虚)
virtio是半虚规范,两个版本0.95和1.0,实现接口有pci,mmio,channel io(1.0特有)方式
先说说设备初始化的一般步骤:开机然后检测,1发现了设备,2然后就设置这个设备状态为ack,表示俺看到你了,喜欢你,
3然后找到相应驱动,状态设为driver,表示有房有车,有存款,还有我们看对眼,
4进行特新协商,初始化队列还有msi-x,专属配置,就是彩礼协商,女方父母说5万就卖女儿,各种一把屎一把尿理论,不舍得这个不舍得哪个等狗屁思想,说白了就是赶紧给钱别废话,男方父母说我们只有5毛钱,女方父母不同意,男方父母没办法就说要不儿子住你家你给俺们家4万就成,女方父页直接蒙圈,心想不能倒贴呀,没办法,男女结合太紧,只能一口价5毛成交,同时各种聘礼各种嫁妆,还有脾气好坏,性格孬好都谈好,
5状态driver_ok,结婚完毕,假如女方赖车里要下车费888888,男方一生气,不结了,状态改成failed
早上10点有点困
virtio前端和后端交互用虚拟队列,主要有描述符队列,可用环表,已用环表,组成,
可用和已用这个我不理解,因为这些高手的书中只是通过文字来向你表述一个事情,我晕了,我想非礼他家人,弄一张图一贴,爱懂不懂,羊驼羊驼,我不建议读者去理解,可能结果就跟我一样,
我又细看了一遍,努力去理解,前端填写数据到描述符,然后用已用环表指向这个描述符,这个时候把这个环表项放到可用环表中,
而设备取可用环表项使用数据,同时把已用环表变成已用
A环为可用表,B环叫已用表
A是指向数据的,B是本来指向数据的被用了所以才加入B的,
你们不懂就算了,反正我过一会也不懂了,
初始化虚拟队列
1,选择队列(需写寄存器)
2,看队列容量(读寄存器)
3,分配队列用的内存,并把物止写入寄存器
4如果msi-x中断启用选择一个向量空写到寄存器,(就是说给队列申请了一个中断)