开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
1 Star 0 Fork 1

xiaodingding/virtio

forked from databuser/virtio
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
项目仓库所选许可证以仓库主分支所使用许可证为准
master
分支 (1)
master
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
贡献代码
同步代码
对比差异 通过 Pull Request 同步
同步更新到分支
通过 Pull Request 同步
将会在向当前分支创建一个 Pull
Request,合入后将完成同步
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
1. virtio移植自Linux4.19内核,transport目前支持mmio,pci legacy,pci modern三种方式。
2. virtio设备驱动目前支持: virtio block,net.
3. 本工程可以编译为内核静态库或者内核驱动模块,方便不同使用需求,通过修改config.mk
 中的COMPILE_TYPE为klib或者kmodule来编译为不同目标文件.
 
4. 使用说明:
 a. 当编译为内核静态库使用时,通过以下示例代码来初始化virtio:
 
 virtio_init();
 virtio_mmio_device_register((void *)VIRT_IO_MMIO, 48);
 virtio_pci_driver_register();
 virtio_blk_driver_register();
 virtio_net_driver_init();
 
 其中virtio_mmio_device_register()需要传入mmio设备基址和起始中断号(假设中断号是连续增加的),
 这两个值在使用qemu不同模拟平台时可能不同,根据实际情况进行修改。
 
 如果是pci设备的话就不要操心上面的问题,因为设备的寄存器等信息都在pci设备的bar空间中,
 virtio_pci_driver_register注册时会自动探测.
 
 b. 当编译为内核驱动模块使用时,只驱动pci总线上的virtio设备.
 
5. 测试
 1. 在qemu aarch64平台下通过1个mmio块设备和两个pci块设备还有一个pci网络设备来测试,qemu启动命令如下:
 
 sudo qemu-system-aarch64 -M virt -cpu cortex-a53 -nographic -smp 4 -kernel bspvirt.elf -m 1024M \
 -drive file=virtio-blk.img,if=none,format=raw,id=hd0 -device virtio-blk-pci,drive=hd0 \
 -net tap -netdev tap,id=tap0 -device virtio-net-pci,netdev=tap0 \
 -drive file=virtio-blk1.img,if=none,format=raw,id=hd1 -device virtio-blk-pci,drive=hd1 \
 -drive file=virtio-blk2.img,if=none,format=raw,id=hd2 -device virtio-blk-device,drive=hd2
 
 系统启动后,通过ints命令可以看到注册了两个pci modern块设备和一个pci modern网络设备和一个mmio块设备中断:
 [root@sylixos:/root]# ints
 interrupt vector show >>
 
 IRQ NAME ENTRY CLEAR ENABLE RND PREEMPT PRIO CPU 0 
 ---- -------------- ---------------- ---------------- ------ --- ------- ---- -------------
 30 tick_isr 40000658 0 true 0 249 
 33 uart0_isr 400052e0 0 true 160 267 
 36 virt_blk_pci_m 40007e00 0 true 160 13 
 37 virt_net_pci_m 40007e00 0 true 160 19 
 38 virt_blk_pci_m 40007e00 0 true 160 2 
 79 virt_blk_mmio 40007250 0 true 160 2 
 
 2. 在qemu x86-64平台下通过一个pci块设备和一个pci网络设备来测试,qemu启动命令如下:
 sudo qemu-system-x86_64 \
 -M q35 -smp 2 -m 2G \
 -hda virtio-blk.img \
 -drive file=virtio-blk1.img,if=none,format=raw,id=hd1 -device virtio-blk-pci,drive=hd1 \
 -net tap -netdev tap,id=tap0 -device virtio-net-pci,netdev=tap0 \
 -vga virtio \
 -display gtk,gl=on \
 -kernel bspx64.elf
 
 系统启动后,通过ints命令可以看到注册了一个pci modern块设备和一个pci modern网络设备中断
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

移植到SylixOS下virtio相关驱动
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/xiaodingding/virtio.git
git@gitee.com:xiaodingding/virtio.git
xiaodingding
virtio
virtio
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /