-
Notifications
You must be signed in to change notification settings - Fork 210
Contribution
Yuekai Jia edited this page Jul 2, 2020
·
9 revisions
欢迎感兴趣的同学一起加入zCore的开发中来,rCore-OS开源社区的同学期待大家的参与与合作!
目前的开发目标有两个主线任务和一个支线任务:
- 主线:实现 Zircon syscalls,以支持更多Fuchsia应用/驱动等。目前已经完成61个,部分完成31个,没完成61个。(2020暑期主要任务之一)
- 主线:支持驱动和图形应用(@rzswh @heheda12345)。目前完成了大部分DDK相关驱动,重点需要改进PCI相关的syscalls.
- 主线:实现 Linux syscalls(支持musl-libc),以支持更多Linux应用。目前已经完成到支持busybox for alpine linux运行。
- 支线:补充功能和修复 bug,通过官方的单元测试
- 主线:实现 Zircon 原始启动流程,支持运行到 shell(已完成,@PanQL @wangrunji04081)
- 主线:实现 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 分支)。