1*3a23230aSlogin# V0.1.7 2*3a23230aSlogin 3*3a23230aSlogin:::{note} 4*3a23230aSlogin本文作者:龙进 <longjin@DragonOS.org> 5*3a23230aSlogin 6*3a23230aSlogin 7*3a23230aSlogin2023年4月24日 8*3a23230aSlogin::: 9*3a23230aSlogin 10*3a23230aSlogin## 贡献者名单 11*3a23230aSlogin 12*3a23230aSloginDragonOS V0.1.7版本由以下小伙伴贡献代码: 13*3a23230aSlogin 14*3a23230aSlogin- 龙进 <longjin@DragonOS.org> 15*3a23230aSlogin- 关锦权 <guanjinquan@DragonOS.org> 16*3a23230aSlogin- 黄厅 <huangting@DragonOS.org> 17*3a23230aSlogin- 侯嘉滢 <houjiaying@DragonOS.org> 18*3a23230aSlogin- 吴宇健 <wuyujian@DragonOS.org> 19*3a23230aSlogin- 苏琎韬 <sujintao@DragonOS.org> 20*3a23230aSlogin- 周瀚杰 <zhouhanjie@DragonOS.org> 21*3a23230aSlogin- HoshuChiu <129569557+HoshuChiu@users.noreply.github.com> 22*3a23230aSlogin- Bullet <93781792+GP-Bullet@users.noreply.github.com> 23*3a23230aSlogin 24*3a23230aSlogin## 赞助者名单 25*3a23230aSlogin 26*3a23230aSlogin感谢以下同学的赞赏,我们将不断努力! 27*3a23230aSlogin 28*3a23230aSlogin- 万晓兰 29*3a23230aSlogin- David Wen 30*3a23230aSlogin- [Seele.Clover](https://github.com/seeleclover) 31*3a23230aSlogin- [FindWangHao](https://github.com/FindWangHao) 32*3a23230aSlogin- [ferchiel](https://github.com/ferchiel) 33*3a23230aSlogin- 叶锦毅 34*3a23230aSlogin- 林 35*3a23230aSlogin- Albert 36*3a23230aSlogin- [TerryLeeSCUT · GitHub](https://github.com/TerryLeeSCUT) 37*3a23230aSlogin- slientbard 38*3a23230aSlogin- 悟 39*3a23230aSlogin- 匿名热心人士 40*3a23230aSlogin 41*3a23230aSlogin## 更新内容-内核 42*3a23230aSlogin 43*3a23230aSlogin- scheduler: 修改CFSqueue从Vec变成红黑树 (#229) 44*3a23230aSlogin- new: lazy_init (#230) (#236) 45*3a23230aSlogin- pci: pci重构+pcie支持 (#235) 46*3a23230aSlogin- net: 增加网络子系统,且能在用户态进行编程 (#237) (#247) 47*3a23230aSlogin- mm: 调整brk系统调用,使得参数、返回值与Linux一致 (#238) 48*3a23230aSlogin- 修改errno,使其与relibc的保持一致 (#234) 49*3a23230aSlogin- pci: 修复ecam无法获取MCFG table的问题 (#241) 50*3a23230aSlogin- libs: DowncastArc and its docs (#244) 51*3a23230aSlogin- softirq: 增加定时器和软中断文档,修改了softirq面向c的接口 (#245) 52*3a23230aSlogin- spinlock: 修复spinlock忘记恢复rflags的问题 (#247) 53*3a23230aSlogin- waitqueue: 增加wakeup_all和sleep_without_schedule的功能 (#247)(#253) 54*3a23230aSlogin- filesystem: 把PollStatus结构体改为使用bitflags库来实现 (#247) 55*3a23230aSlogin- filesystem: 增加iovec的支持(暴力实现) (#247) 56*3a23230aSlogin- filesystem: 新增SysFS (#250) (#254) 57*3a23230aSlogin- driver: 根据sysfs,完善设备驱动模型 (#254) 58*3a23230aSlogin- pipe: 匿名管道重构 (#253) 59*3a23230aSlogin- irq: 新增IrqArch抽象。以及IrqFlagsGuard。以简化关中断-恢复中断的过程 (#253) 60*3a23230aSlogin 61*3a23230aSlogin 62*3a23230aSlogin## 更新内容-用户环境 63*3a23230aSlogin 64*3a23230aSlogin### 新增仓库 65*3a23230aSlogin 66*3a23230aSlogin- 新增子项目:[dsc](https://github.com/DragonOS-Community/dsc.git) 67*3a23230aSlogin- 新增子项目:[DADK](https://github.com/DragonOS-Community/DADK.git) DragonOS Application Development Kit 68*3a23230aSlogin 69*3a23230aSlogin### [DragonOS-relibc](https://github.com/DragonOS-Community/relibc.git) 70*3a23230aSlogin 71*3a23230aSlogin- Add sys_dup and sys_dup2 support (#2) 72*3a23230aSlogin- 添加原本的libc的内存分配器,修复对齐问题。 (#6) (#7) 73*3a23230aSlogin- 配置网络相关的系统调用 (#8) 74*3a23230aSlogin- 修复由于DragonOS不支持TLS(thread local storage)导致errno变量无法正常工作的问题. (#8) 75*3a23230aSlogin 76*3a23230aSlogin## 更新内容-其他 77*3a23230aSlogin 78*3a23230aSlogin- build: 修复Issue#220;vnc的端口号恢复5900 (#243) 79*3a23230aSlogin- bootstrap: 解决使用zsh在构建DragonOS时,无法直接使用一键初始化脚本进行安装的问题 (#252) 80*3a23230aSlogin 81*3a23230aSlogin## 更新内容-软件移植 82*3a23230aSlogin 83*3a23230aSlogin无 84*3a23230aSlogin 85*3a23230aSlogin## 源码、发布版镜像下载 86*3a23230aSlogin 87*3a23230aSlogin  您可以通过以下方式获得源代码: 88*3a23230aSlogin 89*3a23230aSlogin### 通过Git获取 90*3a23230aSlogin 91*3a23230aSlogin- 您可以访问[https://github.com/DragonOS-Community/DragonOS/releases](https://github.com/DragonOS-Community/DragonOS/releases)下载发布版的代码,以及编译好的,可运行的磁盘镜像。 92*3a23230aSlogin- 我们在gitee上也有镜像仓库可供下载:[https://gitee.com/DragonOS/DragonOS](https://gitee.com/DragonOS/DragonOS) 93*3a23230aSlogin 94*3a23230aSlogin### 通过DragonOS软件镜像站获取 95*3a23230aSlogin 96*3a23230aSlogin  为解决国内访问GitHub慢、不稳定的问题,同时为了方便开发者们下载DragonOS的每个版本的代码,我们特意搭建了镜像站,您可以通过以下地址访问镜像站: 97*3a23230aSlogin 98*3a23230aSlogin  您可以通过镜像站获取到DragonOS的代码压缩包,以及编译好的可运行的磁盘镜像。 99*3a23230aSlogin 100*3a23230aSlogin- [https://mirrors.DragonOS.org](https://mirrors.DragonOS.org) 101*3a23230aSlogin- [https://mirrors.DragonOS.org.cn](https://mirrors.DragonOS.org.cn) 102*3a23230aSlogin- 国内镜像加速: [https://mirrors.ringotek.cn/] (https://mirrors.ringotek.cn/) 103*3a23230aSlogin 104*3a23230aSlogin## 开放源代码声明 105*3a23230aSlogin 106*3a23230aSlogin 107*3a23230aSlogin:::{note} 108*3a23230aSlogin为促进DragonOS项目的健康发展,DragonOS以GPLv2开源协议进行发布。所有能获得到DragonOS源代码以及相应的软件制品(包括但不限于二进制副本、文档)的人,都能享有我们通过GPLv2协议授予您的权利,同时您也需要遵守协议中规定的义务。 109*3a23230aSlogin 110*3a23230aSlogin这是一个相当严格的,保护开源软件健康发展,不被侵占的协议。 111*3a23230aSlogin 112*3a23230aSlogin对于大部分的善意的人们而言,您不会违反我们的开源协议。 113*3a23230aSlogin 114*3a23230aSlogin我们鼓励DragonOS的自由传播、推广,但是请确保所有行为没有侵犯他人的合法权益,也没有违反GPLv2协议。 115*3a23230aSlogin 116*3a23230aSlogin请特别注意,对于违反开源协议的,尤其是**商业闭源使用以及任何剽窃、学术不端行为将会受到严肃的追责**。(这是最容易违反我们的开源协议的场景)。 117*3a23230aSlogin 118*3a23230aSlogin并且,请注意,按照GPLv2协议的要求,基于DragonOS修改或二次开发的软件,必须同样采用GPLv2协议开源,并标明其基于DragonOS进行了修改。亦需保证这些修改版本的用户能方便的获取到DragonOS的原始版本。 119*3a23230aSlogin 120*3a23230aSlogin您必须使得DragonOS的开发者们,能够以同样的方式,从公开渠道获取到您二次开发的版本的源代码,否则您将违反GPLv2协议。 121*3a23230aSlogin 122*3a23230aSlogin关于协议详细内容,还敬请您请阅读项目根目录下的**LICENSE**文件。请注意,按照GPLv2协议的要求,**只有英文原版才具有法律效力**。任何翻译版本都仅供参考。 123*3a23230aSlogin::: 124*3a23230aSlogin 125*3a23230aSlogin### 开源软件使用情况 126*3a23230aSlogin 127*3a23230aSlogin  DragonOS在开发的过程中,参考了一些开源项目的设计,或者引入了他们的部分代码,亦或是受到了他们的启发。现将他们列在下面。我们对这些开源项目的贡献者们致以最衷心的感谢! 128*3a23230aSlogin 129*3a23230aSlogin格式:<项目名> - <链接> - <开源协议> 130*3a23230aSlogin 131*3a23230aSlogin- Linux - https://git.kernel.org/ - GPLv2 132*3a23230aSlogin- skiftOS - https://github.com/skiftOS/skift - MIT 133*3a23230aSlogin- FYSOS - https://github.com/fysnet/FYSOS - [FYSOS' License](https://github.com/fysnet/FYSOS/blob/9a8968e3d6600de34539c028c843f4c06d134039/license.txt) 134*3a23230aSlogin- LemonOS - https://github.com/LemonOSProject/LemonOS.git - BSD 2-Clause License 135*3a23230aSlogin- LZ4 - https://github.com/lz4/lz4 - BSD 2-Clause license 136*3a23230aSlogin- SerenityOS - https://github.com/SerenityOS/serenity.git - BSD 2-Clause license 137*3a23230aSlogin- MINE - 《一个64位操作系统的设计与实现》田宇; 人民邮电出版社 138*3a23230aSlogin- chcore - 《现代操作系统:设计与实现》陈海波,夏虞斌; 机械工业出版社 139*3a23230aSlogin- SimpleKernel - https://github.com/Simple-XX/SimpleKernel - MIT 140*3a23230aSlogin- rcore-fs - https://github.com/rcore-os/rcore-fs.git - MIT 141*3a23230aSlogin- redox - https://gitlab.redox-os.org/redox-os/redox - MIT 142*3a23230aSlogin 143*3a23230aSlogin## 当前版本的所有提交记录 144*3a23230aSlogin 145*3a23230aSlogin```text 146*3a23230aSlogincommit e0de0fd6a52199753a3127cfbb5d12f0a1555aae 147*3a23230aSloginAuthor: TingHuang <92705854+TingSHub@users.noreply.github.com> 148*3a23230aSloginDate: Sun Apr 23 22:55:57 2023 +0800 149*3a23230aSlogin 150*3a23230aSlogin 根据sysfs完善设备驱动模型 & 添加sysfs官方文档 (#254) 151*3a23230aSlogin 152*3a23230aSlogin * 根据sysfs完善设备驱动模型 153*3a23230aSlogin 154*3a23230aSlogin * 添加sysfs官方文档 155*3a23230aSlogin 156*3a23230aSlogincommit f678331a3315b7847f08ab32b42d5bf49a9f3a6a 157*3a23230aSloginAuthor: hanjiezhou <zhouhanjie@dragonos.org> 158*3a23230aSloginDate: Sun Apr 23 21:05:10 2023 +0800 159*3a23230aSlogin 160*3a23230aSlogin 匿名管道重构&增加IrqArch trait以及IrqFlags及其守卫 (#253) 161*3a23230aSlogin 162*3a23230aSlogin * 实现匿名管道 163*3a23230aSlogin 164*3a23230aSlogin * 增加IrqArch trait以及IrqFlags及其守卫 165*3a23230aSlogin 166*3a23230aSlogin --------- 167*3a23230aSlogin 168*3a23230aSlogin Co-authored-by: longjin <longjin@RinGoTek.cn> 169*3a23230aSlogin 170*3a23230aSlogincommit 8a1e95abb5e4df5e872bb452efc26c9e9631157d 171*3a23230aSloginAuthor: Bullet <93781792+GP-Bullet@users.noreply.github.com> 172*3a23230aSloginDate: Fri Apr 21 23:36:54 2023 +0800 173*3a23230aSlogin 174*3a23230aSlogin 解决使用zsh在构建DragonOS时,无法直接使用一键初始化脚本进行安装的问题 (#252) 175*3a23230aSlogin 176*3a23230aSlogincommit dd9f1fc1a42406461e6f0d38cce1e56e22a1a15f 177*3a23230aSloginAuthor: TingHuang <92705854+TingSHub@users.noreply.github.com> 178*3a23230aSloginDate: Fri Apr 21 16:03:42 2023 +0800 179*3a23230aSlogin 180*3a23230aSlogin 新增SysFS (#250) 181*3a23230aSlogin 182*3a23230aSlogin * 添加sysfs 183*3a23230aSlogin 184*3a23230aSlogin * 注册sysfs 185*3a23230aSlogin 186*3a23230aSlogin * 添加sysfs相关 187*3a23230aSlogin 188*3a23230aSlogin * 添加rust-anlyzer辅助配置 189*3a23230aSlogin 190*3a23230aSlogin * 将设备与sysfs相关联 191*3a23230aSlogin 192*3a23230aSlogin * 添加单独的文件管理sysfs下的文件夹 193*3a23230aSlogin 194*3a23230aSlogincommit cde5492f725681ed89abe1e6eb088e05d943d793 195*3a23230aSloginAuthor: login <longjin@DragonOS.org> 196*3a23230aSloginDate: Wed Apr 19 18:05:02 2023 +0800 197*3a23230aSlogin 198*3a23230aSlogin 新增网络socket的系统调用接口 (#247) 199*3a23230aSlogin 200*3a23230aSlogin 1.修复spinlock忘记恢复rflags的问题 201*3a23230aSlogin 2.WaitQueue增加wakeup_all的功能 202*3a23230aSlogin 3.完善tcp,udp,raw socket 203*3a23230aSlogin 4.把PollStatus结构体改为使用bitflags 204*3a23230aSlogin 5.新增iovec结构体 205*3a23230aSlogin 6.完成网络的系统调用 206*3a23230aSlogin 7.在bootstrap里面添加dnsmasq bridge-utils iptables 207*3a23230aSlogin 208*3a23230aSlogin --------- 209*3a23230aSlogin 210*3a23230aSlogin Co-authored-by: guanjinquan <1666320330@qq.com> 211*3a23230aSlogin 212*3a23230aSlogincommit 8fd71f277271ae68e648f290c67f187b030feae0 213*3a23230aSloginAuthor: houmkh <1119644616@qq.com> 214*3a23230aSloginDate: Mon Apr 17 17:17:06 2023 +0800 215*3a23230aSlogin 216*3a23230aSlogin 增加定时器和软中断文档,修改了softirq面向c的接口 (#245) 217*3a23230aSlogin 218*3a23230aSlogin * 增加定时器和软中断文档 219*3a23230aSlogin 220*3a23230aSlogin * 修改softirq对c的接口和文档 221*3a23230aSlogin 222*3a23230aSlogin * 修改文档格式 223*3a23230aSlogin 224*3a23230aSlogincommit 77c928f6ce3192c79ea42ab7bcba2713e289f73b 225*3a23230aSloginAuthor: login <longjin@DragonOS.org> 226*3a23230aSloginDate: Sun Apr 16 20:29:04 2023 +0800 227*3a23230aSlogin 228*3a23230aSlogin new: DowncastArc and its docs (#244) 229*3a23230aSlogin 230*3a23230aSlogincommit 7149abaa49a4ca70f0e42ad3b61fdfd6a941a092 231*3a23230aSloginAuthor: HoshuChiu <129569557+HoshuChiu@users.noreply.github.com> 232*3a23230aSloginDate: Sun Apr 16 14:47:51 2023 +0800 233*3a23230aSlogin 234*3a23230aSlogin 修复Issue#220;vnc的端口号恢复5900 (#243) 235*3a23230aSlogin 236*3a23230aSlogin 237*3a23230aSlogin * 修复Issue#220 238*3a23230aSlogin 239*3a23230aSlogin * qemu-vnc端口号恢复为5900 240*3a23230aSlogin 241*3a23230aSlogincommit 5c1e552cc7f0a6ad75c8a1fa2928e3b9cc619657 242*3a23230aSloginAuthor: YJwu2023 <yujianwu2019@gmail.com> 243*3a23230aSloginDate: Fri Apr 14 12:21:08 2023 +0800 244*3a23230aSlogin 245*3a23230aSlogin 修复ecam无法获取MCFG table的问题 (#241) 246*3a23230aSlogin 247*3a23230aSlogincommit 79a452ce8f27ad9c7283ac0bcf4078ed6fa018d7 248*3a23230aSloginAuthor: houmkh <1119644616@qq.com> 249*3a23230aSloginDate: Tue Apr 11 17:05:33 2023 +0800 250*3a23230aSlogin 251*3a23230aSlogin 修改errno,使其与relibc的保持一致 (#234) 252*3a23230aSlogin 253*3a23230aSlogin 修改errno,使其与relibc的保持一致 254*3a23230aSlogin 255*3a23230aSlogincommit ac48398d3f17f24ff9b5da5e400ce912d05f0ba2 256*3a23230aSloginAuthor: login <longjin@DragonOS.org> 257*3a23230aSloginDate: Tue Apr 11 16:54:14 2023 +0800 258*3a23230aSlogin 259*3a23230aSlogin 调整brk系统调用,使得参数、返回值与Linux一致 (#238) 260*3a23230aSlogin 261*3a23230aSlogin * 新增用于测试relibc的app 262*3a23230aSlogin 263*3a23230aSlogin * 为适配relibc,修改do_execve中关于用户栈的内容的设置 264*3a23230aSlogin 265*3a23230aSlogin * 调整brk系统调用,使得参数、返回值与Linux一致 266*3a23230aSlogin 267*3a23230aSlogincommit 13776c114b15c406b1e0aaeeb71812ea6e471d2e 268*3a23230aSloginAuthor: login <longjin@DragonOS.org> 269*3a23230aSloginDate: Mon Apr 10 20:22:39 2023 +0800 270*3a23230aSlogin 271*3a23230aSlogin 增加对dhcpv4的支持(tcp、udp socket已写好,但由于缺少epoll机制,尚未完整测试) (#237) 272*3a23230aSlogin 273*3a23230aSlogin * 为virtio网卡完成smoltcp的phy层配置 274*3a23230aSlogin 275*3a23230aSlogin * raw socket 276*3a23230aSlogin 277*3a23230aSlogin * 初步写完udp和tcp socket 278*3a23230aSlogin 279*3a23230aSlogin * 能够正常通过dhcp获取ipv4地址(具有全局iface btree) 280*3a23230aSlogin 281*3a23230aSlogin --------- 282*3a23230aSlogin 283*3a23230aSlogin Co-authored-by: guanjinquan <1666320330@qq.com> 284*3a23230aSlogin 285*3a23230aSlogincommit 78bf93f02f84bf5e024ddfb559f040e68ce39ccf 286*3a23230aSloginAuthor: YJwu2023 <yujianwu2019@gmail.com> 287*3a23230aSloginDate: Sun Apr 9 12:30:02 2023 +0800 288*3a23230aSlogin 289*3a23230aSlogin pci重构+pcie支持 (#235) 290*3a23230aSlogin 291*3a23230aSlogin * pci重构+pcie支持 292*3a23230aSlogin 293*3a23230aSlogin * pci重构测试完成 294*3a23230aSlogin 295*3a23230aSlogin * 修正makefile的问题 296*3a23230aSlogin 297*3a23230aSlogin * 小修改 298*3a23230aSlogin 299*3a23230aSlogin * 修改函数名字 300*3a23230aSlogin 301*3a23230aSlogincommit 5c9a63df836eedaca33c8c4c600b7aaeb2caf9a6 302*3a23230aSloginAuthor: login <longjin@DragonOS.org> 303*3a23230aSloginDate: Sat Apr 8 23:53:53 2023 +0800 304*3a23230aSlogin 305*3a23230aSlogin Patch add lazy init (#236) 306*3a23230aSlogin 307*3a23230aSlogin * 修正并发安全问题 308*3a23230aSlogin 309*3a23230aSlogincommit 766127209ee49465a8086cfd0bec90d8b79a96c0 310*3a23230aSloginAuthor: login <longjin@DragonOS.org> 311*3a23230aSloginDate: Thu Apr 6 19:01:30 2023 +0800 312*3a23230aSlogin 313*3a23230aSlogin new: lazy_init (#230) 314*3a23230aSlogin 315*3a23230aSlogincommit e0dfd4d5d70d1b50fc7ad3ed4bf84b7ba6dad19d 316*3a23230aSloginAuthor: hanjiezhou <zhouhanjie@dragonos.org> 317*3a23230aSloginDate: Thu Apr 6 00:50:14 2023 +0800 318*3a23230aSlogin 319*3a23230aSlogin 修改CFSqueue从Vec变成红黑树 (#229) 320*3a23230aSlogin 321*3a23230aSlogin 使用了由tickbh编写的rbtree: https://github.com/tickbh/rbtree-rs/blob/master/src/lib.rs 322*3a23230aSlogin 323*3a23230aSlogin Co-authored-by: tickbh <tickdream125@hotmail.com> 324*3a23230aSlogin 325*3a23230aSlogincommit 2a7d773d3d39f1cb3d59d6baa817c896c6fd52d1 326*3a23230aSloginAuthor: TingHuang <92705854+TingSHub@users.noreply.github.com> 327*3a23230aSloginDate: Wed Apr 5 13:02:05 2023 +0800 328*3a23230aSlogin 329*3a23230aSlogin 新增设备驱动模型,为设备和驱动提供高层视图 (#227) 330*3a23230aSlogin 331*3a23230aSlogin * 添加base mod 332*3a23230aSlogin 333*3a23230aSlogin * 添加设备驱动模型相关文件 334*3a23230aSlogin 335*3a23230aSlogin * 删除单独的mod文件,使用mod.rs,修改一些格式上的问题 336*3a23230aSlogin 337*3a23230aSlogin * 移动驱动错误类型到该文件 338*3a23230aSlogin 339*3a23230aSlogin * 修改一些格式上的问题 340*3a23230aSlogin 341*3a23230aSlogincommit 5d00b1852818dd4b25952fd6a30deb20e7c7df53 342*3a23230aSloginAuthor: login <longjin@DragonOS.org> 343*3a23230aSloginDate: Wed Apr 5 00:53:35 2023 +0800 344*3a23230aSlogin 345*3a23230aSlogin 修复显示刷新线程的空指针问题 (#228) 346*3a23230aSlogin 347*3a23230aSlogin```