Skip to content

Contribution

Yuekai Jia edited this page Jul 2, 2020 · 9 revisions

开发目标

欢迎感兴趣的同学一起加入zCore的开发中来,rCore-OS开源社区的同学期待大家的参与与合作!

目前的开发目标有两个主线任务和一个支线任务:

正在进行

  1. 主线:实现 Zircon syscalls,以支持更多Fuchsia应用/驱动等。目前已经完成61个,部分完成31个,没完成61个。(2020暑期主要任务之一)
  2. 主线:支持驱动和图形应用(@rzswh @heheda12345)。目前完成了大部分DDK相关驱动,重点需要改进PCI相关的syscalls.
  3. 主线:实现 Linux syscalls(支持musl-libc),以支持更多Linux应用。目前已经完成到支持busybox for alpine linux运行。
  4. 支线:补充功能和修复 bug,通过官方的单元测试

已经完成

  1. 主线:实现 Zircon 原始启动流程,支持运行到 shell(已完成,@PanQL @wangrunji04081)
  2. 主线:实现 Linux 原始启动流程,支持运行到 busybox for alpine linux(已完成,@wangrunji04081)

帮助修复单元测试

为了快速上手 zCore 的开发,一个可以马上拿来练手的小任务就是修复单元测试。

单元测试的状态在 Core tests 中维护。

Fuchsia 官方提供了一些用户态的测例,代码位于 zircon/system/utest 目录中,生成的程序位于 bootfs 中的 test/core-*。在我们预编译好的 bringup.zbi 中可以找到它。

运行测试的方法:在 shell 启动后输入 runtests --all,会运行全部测试。如果只需要运行特定测试,可以加参数,例如 runtests -n core-channel。其它参数可以用 -h 查看。

修复测试的一般流程是这样的:

  • 首先根据名字,找一个看上去容易修复的测试点
  • 根据错误信息,推测导致测试挂掉的原因
  • 查看文档,理解接口和对象的正确行为
  • 如有必要,查看测试源码,了解具体操作过程
  • 查看 zCore 现有实现代码,找到导致错误的原因(完全没实现?实现了但没导出syscall?实现得不正确?)
  • 尝试修复并重新测试,重复以上过程直到测试通过

这个过程可以帮助你熟悉 Zircon 对象设计、具体接口语义,以及 zCore 的实现状态。

假如你完成了修复工作,希望能及时通报进展,并尽快 merge 到开发分支中(目前是 executor 分支)。

Clone this wiki locally