1*5db5a565SLoGin# V0.1.8 2*5db5a565SLoGin 3*5db5a565SLoGin:::{note} 4*5db5a565SLoGin本文作者:龙进 <longjin@DragonOS.org> 5*5db5a565SLoGin 6*5db5a565SLoGin 7*5db5a565SLoGin2023年8月16日 8*5db5a565SLoGin::: 9*5db5a565SLoGin 10*5db5a565SLoGin## 贡献者名单 11*5db5a565SLoGin 12*5db5a565SLoGinDragonOS V0.1.8版本由以下小伙伴贡献代码: 13*5db5a565SLoGin 14*5db5a565SLoGin- 龙进 <longjin@DragonOS.org> 15*5db5a565SLoGin- 侯嘉滢 <houjiaying@DragonOS.org> 16*5db5a565SLoGin- 吴宇健 <wuyujian@DragonOS.org> 17*5db5a565SLoGin- 黄厅 <huangting@DragonOS.org> 18*5db5a565SLoGin- 孔维超 <kongweichao@DragonOS.org> 19*5db5a565SLoGin- 蔡嘉鑫 <caijiaxin@DragonOS.org> 20*5db5a565SLoGin- 池克俭 <chikejhian@DragonOS.org> 21*5db5a565SLoGin- zhaoyao73 <dragonlinux@gmail.com> 22*5db5a565SLoGin- 周瀚杰 <zhouhanjie@DragonOS.org> 23*5db5a565SLoGin- Bullet <93781792+GP-Bullet@users.noreply.github.com> 24*5db5a565SLoGin- 櫻井桃華 <89176634+TihayaKousaka@users.noreply.github.com> 25*5db5a565SLoGin- Tptogiar <2528891112@qq.com> 26*5db5a565SLoGin 27*5db5a565SLoGin## 赞助者名单 28*5db5a565SLoGin 29*5db5a565SLoGin感谢以下同学的赞赏,我们将不断努力! 30*5db5a565SLoGin 31*5db5a565SLoGin- 万晓兰 32*5db5a565SLoGin- David Wen 33*5db5a565SLoGin- [Seele.Clover](https://github.com/seeleclover) 34*5db5a565SLoGin- [FindWangHao](https://github.com/FindWangHao) 35*5db5a565SLoGin- [ferchiel](https://github.com/ferchiel) 36*5db5a565SLoGin- 叶锦毅 37*5db5a565SLoGin- 林 38*5db5a565SLoGin- Albert 39*5db5a565SLoGin- [TerryLeeSCUT · GitHub](https://github.com/TerryLeeSCUT) 40*5db5a565SLoGin- slientbard 41*5db5a565SLoGin- 悟 42*5db5a565SLoGin- 匿名热心人士 43*5db5a565SLoGin 44*5db5a565SLoGin## 更新内容-内核 45*5db5a565SLoGin 46*5db5a565SLoGin### 新特性 47*5db5a565SLoGin 48*5db5a565SLoGin- refactor: 重构系统调用模块 (#267) 49*5db5a565SLoGin- feature: 添加AlignBox和int_like宏 (#272) 50*5db5a565SLoGin- refactor: 新的ipi功能&kick_cpu功能的重写 (#274) 51*5db5a565SLoGin- feature: 实现gettimeofday()系统调用和clocksource+timekeeping子模块 (#278) 52*5db5a565SLoGin- refactor: PCI设备中断重构,并删去USB相关代码 (#285) 53*5db5a565SLoGin- feature: 注册串口设备,创建字符设备框架(#290) 54*5db5a565SLoGin- refactor: 新的内存管理模块 (#303) 55*5db5a565SLoGin- feature: 新的二进制加载器、elf解析器 (#303) 56*5db5a565SLoGin- feature: 增加 ListenTable 来检测端口占用 (#291) 57*5db5a565SLoGin- feature: 替换 local_irq_save 为 IrqFlagsGuard 实现 (#317) 58*5db5a565SLoGin- feature: 实现系统调用Fstat (#295) 59*5db5a565SLoGin- feature: 实现内核通知链 notifier chain (#316) 60*5db5a565SLoGin- feature: 增加fcntl系统调用 (#323) 61*5db5a565SLoGin- feature: 添加per cpu变量支持 (#327) 62*5db5a565SLoGin- feature: spinlock守卫新增leak,spinlock新增force unlock功能.(#329) 63*5db5a565SLoGin 64*5db5a565SLoGin### bugfix 65*5db5a565SLoGin- bugfix: 修复无法正常读取stdin的问题 (#264) 66*5db5a565SLoGin- bugfix: 修复了当传入ahci驱动的缓冲区地址为用户缓冲区时,产生的内存越界问题.(采用分配内核缓冲区的方式临时解决) (#265) 67*5db5a565SLoGin- bugfix: 解决由于local_irq_save、local_irq_restore函数的汇编不规范导致影响栈行为的bug。 (#303) 68*5db5a565SLoGin- bugfix: 解决local_irq_save未关中断的错误 (#303) 69*5db5a565SLoGin- bugfix: 解决arch_try_cmpxchg对于指针处理的错误 (#307) 70*5db5a565SLoGin- bugfix: 修复了wait4的异常报错 (#312) 71*5db5a565SLoGin- bugfix: 修正null设备以及zero设备无法open、行为不符合预期的问题 (#314) 72*5db5a565SLoGin- bugfix: 修正fat文件系统未能正确的扩展文件大小的bug (#323) 73*5db5a565SLoGin- bugfix: 修正rwlock有的地方由于未使用ManuallyDrop导致的use after free问题 (#329) 74*5db5a565SLoGin 75*5db5a565SLoGin 76*5db5a565SLoGin## 更新内容-用户环境 77*5db5a565SLoGin 78*5db5a565SLoGin### 新特性 79*5db5a565SLoGin- feature: 新增http server (#265) 80*5db5a565SLoGin 81*5db5a565SLoGin### bugfix 82*5db5a565SLoGin- bugfix: 解决链接时,由于crt*.o未按照升序排列导致init段链接错误的问题 (#265) 83*5db5a565SLoGin 84*5db5a565SLoGin 85*5db5a565SLoGin## 更新内容-其他 86*5db5a565SLoGin 87*5db5a565SLoGin- bugfix: 固定编译工具链、修复由于新版rust编译器问题导致的报错。 (#258) 88*5db5a565SLoGin- feature: Makefile: 根目录下添加make help命令 (#271) 89*5db5a565SLoGin- doc: 更新github issue模板 (#277) 90*5db5a565SLoGin- bugfix: 解决relibc的头文件没能识别__dragonos__定义的问题 (#315) 91*5db5a565SLoGin- feature: 设置内核、relibc的远程为dragonos的git镜像站,防止国内网络问题导致编译失败 (#318) 92*5db5a565SLoGin- feature: 自动安装、更新dadk (#319) 93*5db5a565SLoGin 94*5db5a565SLoGin## 更新内容-软件移植 95*5db5a565SLoGin 96*5db5a565SLoGin- feature: 移植了sqlite3 (#323) 97*5db5a565SLoGin 98*5db5a565SLoGin## 源码、发布版镜像下载 99*5db5a565SLoGin 100*5db5a565SLoGin  您可以通过以下方式获得源代码: 101*5db5a565SLoGin 102*5db5a565SLoGin### 通过Git获取 103*5db5a565SLoGin 104*5db5a565SLoGin- 您可以访问[https://github.com/DragonOS-Community/DragonOS/releases](https://github.com/DragonOS-Community/DragonOS/releases)下载发布版的代码,以及编译好的,可运行的磁盘镜像。 105*5db5a565SLoGin- 我们在gitee上也有镜像仓库可供下载:[https://gitee.com/DragonOS/DragonOS](https://gitee.com/DragonOS/DragonOS) 106*5db5a565SLoGin 107*5db5a565SLoGin### 通过DragonOS软件镜像站获取 108*5db5a565SLoGin 109*5db5a565SLoGin  为解决国内访问GitHub慢、不稳定的问题,同时为了方便开发者们下载DragonOS的每个版本的代码,我们特意搭建了镜像站,您可以通过以下地址访问镜像站: 110*5db5a565SLoGin 111*5db5a565SLoGin  您可以通过镜像站获取到DragonOS的代码压缩包,以及编译好的可运行的磁盘镜像。 112*5db5a565SLoGin 113*5db5a565SLoGin- [https://mirrors.DragonOS.org](https://mirrors.DragonOS.org) 114*5db5a565SLoGin- [https://git.mirrors.DragonOS.org](https://git.mirrors.DragonOS.org) 115*5db5a565SLoGin- 国内镜像加速: [https://mirrors.ringotek.cn/](https://mirrors.ringotek.cn/) 116*5db5a565SLoGin 117*5db5a565SLoGin## 开放源代码声明 118*5db5a565SLoGin 119*5db5a565SLoGin 120*5db5a565SLoGin:::{note} 121*5db5a565SLoGin为促进DragonOS项目的健康发展,DragonOS以GPLv2开源协议进行发布。所有能获得到DragonOS源代码以及相应的软件制品(包括但不限于二进制副本、文档)的人,都能享有我们通过GPLv2协议授予您的权利,同时您也需要遵守协议中规定的义务。 122*5db5a565SLoGin 123*5db5a565SLoGin这是一个相当严格的,保护开源软件健康发展,不被侵占的协议。 124*5db5a565SLoGin 125*5db5a565SLoGin对于大部分的善意的人们而言,您不会违反我们的开源协议。 126*5db5a565SLoGin 127*5db5a565SLoGin我们鼓励DragonOS的自由传播、推广,但是请确保所有行为没有侵犯他人的合法权益,也没有违反GPLv2协议。 128*5db5a565SLoGin 129*5db5a565SLoGin请特别注意,对于违反开源协议的,尤其是**商业闭源使用以及任何剽窃、学术不端行为将会受到严肃的追责**。(这是最容易违反我们的开源协议的场景)。 130*5db5a565SLoGin 131*5db5a565SLoGin并且,请注意,按照GPLv2协议的要求,基于DragonOS修改或二次开发的软件,必须同样采用GPLv2协议开源,并标明其基于DragonOS进行了修改。亦需保证这些修改版本的用户能方便的获取到DragonOS的原始版本。 132*5db5a565SLoGin 133*5db5a565SLoGin您必须使得DragonOS的开发者们,能够以同样的方式,从公开渠道获取到您二次开发的版本的源代码,否则您将违反GPLv2协议。 134*5db5a565SLoGin 135*5db5a565SLoGin关于协议详细内容,还敬请您请阅读项目根目录下的**LICENSE**文件。请注意,按照GPLv2协议的要求,**只有英文原版才具有法律效力**。任何翻译版本都仅供参考。 136*5db5a565SLoGin::: 137*5db5a565SLoGin 138*5db5a565SLoGin### 开源软件使用情况 139*5db5a565SLoGin 140*5db5a565SLoGin  DragonOS在开发的过程中,参考了一些开源项目的设计,或者引入了他们的部分代码,亦或是受到了他们的启发。现将他们列在下面。我们对这些开源项目的贡献者们致以最衷心的感谢! 141*5db5a565SLoGin 142*5db5a565SLoGin格式:<项目名> - <链接> - <开源协议> 143*5db5a565SLoGin 144*5db5a565SLoGin- Linux - https://git.kernel.org/ - GPLv2 145*5db5a565SLoGin- skiftOS - https://github.com/skiftOS/skift - MIT 146*5db5a565SLoGin- FYSOS - https://github.com/fysnet/FYSOS - [FYSOS' License](https://github.com/fysnet/FYSOS/blob/9a8968e3d6600de34539c028c843f4c06d134039/license.txt) 147*5db5a565SLoGin- LemonOS - https://github.com/LemonOSProject/LemonOS.git - BSD 2-Clause License 148*5db5a565SLoGin- LZ4 - https://github.com/lz4/lz4 - BSD 2-Clause license 149*5db5a565SLoGin- SerenityOS - https://github.com/SerenityOS/serenity.git - BSD 2-Clause license 150*5db5a565SLoGin- MINE - 《一个64位操作系统的设计与实现》田宇; 人民邮电出版社 151*5db5a565SLoGin- chcore - 《现代操作系统:设计与实现》陈海波,夏虞斌; 机械工业出版社 152*5db5a565SLoGin- SimpleKernel - https://github.com/Simple-XX/SimpleKernel - MIT 153*5db5a565SLoGin- rcore-fs - https://github.com/rcore-os/rcore-fs.git - MIT 154*5db5a565SLoGin- redox - https://gitlab.redox-os.org/redox-os/redox - MIT 155*5db5a565SLoGin 156*5db5a565SLoGin## 当前版本的所有提交记录 157*5db5a565SLoGin 158*5db5a565SLoGin```text 159*5db5a565SLoGincommit 40176b1c6603d487b7eb66fb81e641f0932ab90a 160*5db5a565SLoGinAuthor: longjin <longjin@RinGoTek.cn> 161*5db5a565SLoGinDate: Tue Aug 15 15:06:57 2023 +0000 162*5db5a565SLoGin 163*5db5a565SLoGin 删除无用代码,并把about app的版本号更新为0.1.8 164*5db5a565SLoGin 165*5db5a565SLoGincommit 67b481888770c6469f572f244a4f97e42da77d1f 166*5db5a565SLoGinAuthor: houmkh <1119644616@qq.com> 167*5db5a565SLoGinDate: Mon Aug 14 12:18:46 2023 +0800 168*5db5a565SLoGin 169*5db5a565SLoGin 移动fstat (#330) 170*5db5a565SLoGin 171*5db5a565SLoGin * 移动fstat 172*5db5a565SLoGin 173*5db5a565SLoGincommit 90a0a49048fdaf5e31320d0c87f8bed8db1bd882 174*5db5a565SLoGinAuthor: LoGin <longjin@DragonOS.org> 175*5db5a565SLoGinDate: Mon Aug 14 01:24:49 2023 +0800 176*5db5a565SLoGin 177*5db5a565SLoGin 修正rwlock有的地方由于未使用ManuallyDrop导致的use after free && spinlock守卫新增leak,spinlock新增force unlock功能.(#329) 178*5db5a565SLoGin 179*5db5a565SLoGin 1.修正rwlock有的地方由于未使用ManuallyDrop导致的use after free 180*5db5a565SLoGin 2. spinlock守卫新增leak,spinlock新增force unlock功能. 181*5db5a565SLoGin 182*5db5a565SLoGincommit c3dad0011d331d782670e14723aa48e98fbac787 183*5db5a565SLoGinAuthor: LoGin <longjin@DragonOS.org> 184*5db5a565SLoGinDate: Sun Aug 13 16:28:24 2023 +0800 185*5db5a565SLoGin 186*5db5a565SLoGin 添加per cpu变量支持 (#327) 187*5db5a565SLoGin 188*5db5a565SLoGincommit 42c97fa7f4fee7eeefeda5d2b7ed14f598a58493 189*5db5a565SLoGinAuthor: LoGin <longjin@DragonOS.org> 190*5db5a565SLoGinDate: Tue Aug 8 23:45:04 2023 +0800 191*5db5a565SLoGin 192*5db5a565SLoGin 删除旧的libELF (#324) 193*5db5a565SLoGin 194*5db5a565SLoGincommit 6d81180b3b7328466b976b69c5f7782aa66d8a89 195*5db5a565SLoGinAuthor: LoGin <longjin@DragonOS.org> 196*5db5a565SLoGinDate: Tue Aug 8 23:39:22 2023 +0800 197*5db5a565SLoGin 198*5db5a565SLoGin 移植sqlite3,并修复一些bug (#323) 199*5db5a565SLoGin 200*5db5a565SLoGin * bugfix: 程序加载器映射内存时,计算要映射的大小不正确的问题。 201*5db5a565SLoGin 202*5db5a565SLoGin * 修正brk系统调用不符合规范的地方 203*5db5a565SLoGin 204*5db5a565SLoGin * bugfix: 修正fat文件系统未能正确的扩展文件大小的bug 205*5db5a565SLoGin 206*5db5a565SLoGin * 增加fcntl系统调用 207*5db5a565SLoGin 208*5db5a565SLoGin * 移植sqlite3 209*5db5a565SLoGin 210*5db5a565SLoGincommit 26887c6334cdca2d13ad71dec27fb69faa0a57be 211*5db5a565SLoGinAuthor: LoGin <longjin@DragonOS.org> 212*5db5a565SLoGinDate: Mon Aug 7 01:38:52 2023 +0800 213*5db5a565SLoGin 214*5db5a565SLoGin bugfix: 解决取消低地址映射时,错误的把重映射的物理页释放,从而导致的use after free问题。 (#321) 215*5db5a565SLoGin 216*5db5a565SLoGincommit 729a96ef47f473d535d8317a2ace5ba141fd282a 217*5db5a565SLoGinAuthor: Xshine <gshine@m.scnu.edu.cn> 218*5db5a565SLoGinDate: Sun Aug 6 12:53:47 2023 +0800 219*5db5a565SLoGin 220*5db5a565SLoGin 实现内核通知链 notifier chain (#316) 221*5db5a565SLoGin 222*5db5a565SLoGin * 实现通知链块结构 223*5db5a565SLoGin 224*5db5a565SLoGin * 实现通知链的基本功能 225*5db5a565SLoGin 226*5db5a565SLoGin * 实现 atomic notifier chain 227*5db5a565SLoGin 228*5db5a565SLoGin * 实现 blocking notifier chain 229*5db5a565SLoGin 230*5db5a565SLoGin * 使用 rust 范式完成功能 231*5db5a565SLoGin 232*5db5a565SLoGin * 支持回调次数 nr_to_call 233*5db5a565SLoGin 234*5db5a565SLoGin * 移动至 libs 目录 235*5db5a565SLoGin 236*5db5a565SLoGin * 完善通知链相关方法 237*5db5a565SLoGin 238*5db5a565SLoGin * 修正相关格式 239*5db5a565SLoGin 240*5db5a565SLoGin * 文档编写 241*5db5a565SLoGin 242*5db5a565SLoGin * 更改文档路径 243*5db5a565SLoGin 244*5db5a565SLoGincommit be63f3b2b6b472daa3ee17180aa607409cb9d182 245*5db5a565SLoGinAuthor: houmkh <1119644616@qq.com> 246*5db5a565SLoGinDate: Sat Aug 5 18:52:46 2023 +0800 247*5db5a565SLoGin 248*5db5a565SLoGin 实现系统调用Fstat (#295) 249*5db5a565SLoGin 250*5db5a565SLoGin * fstat 251*5db5a565SLoGin 252*5db5a565SLoGin * 修改syscall.rs中的verify_area 253*5db5a565SLoGin 254*5db5a565SLoGincommit 9550910ae1de900e0291a84d268e8873fa142902 255*5db5a565SLoGinAuthor: Chiichen <39649411+Chiichen@users.noreply.github.com> 256*5db5a565SLoGinDate: Sat Aug 5 18:30:55 2023 +0800 257*5db5a565SLoGin 258*5db5a565SLoGin 替换 local_irq_save 为 IrqFlagsGuard 实现 (#317) 259*5db5a565SLoGin 260*5db5a565SLoGincommit abf3f634bf7e13e829556e962e7c73a85d163335 261*5db5a565SLoGinAuthor: LoGin <longjin@DragonOS.org> 262*5db5a565SLoGinDate: Sat Aug 5 15:30:06 2023 +0800 263*5db5a565SLoGin 264*5db5a565SLoGin 自动安装、更新dadk (#319) 265*5db5a565SLoGin 266*5db5a565SLoGin * auto install/auto update dadk 267*5db5a565SLoGin 268*5db5a565SLoGincommit d6fd9c1e8025dd679339f9156477cb7d26d3db0d 269*5db5a565SLoGinAuthor: LoGin <longjin@DragonOS.org> 270*5db5a565SLoGinDate: Sat Aug 5 15:04:08 2023 +0800 271*5db5a565SLoGin 272*5db5a565SLoGin 设置内核、relibc的远程为dragonos的git镜像站,防止国内网络问题导致编译失败 (#318) 273*5db5a565SLoGin 274*5db5a565SLoGincommit 1a62e7767c1215f9668915b42de770e7993711bf 275*5db5a565SLoGinAuthor: LoGin <longjin@DragonOS.org> 276*5db5a565SLoGinDate: Wed Aug 2 18:11:05 2023 +0800 277*5db5a565SLoGin 278*5db5a565SLoGin 解决relibc的头文件没能识别__dragonos__定义的问题 (#315) 279*5db5a565SLoGin 280*5db5a565SLoGincommit 06500303303ec14711b4f995e2058e12703f0f2c 281*5db5a565SLoGinAuthor: LoGin <longjin@DragonOS.org> 282*5db5a565SLoGinDate: Wed Aug 2 17:33:16 2023 +0800 283*5db5a565SLoGin 284*5db5a565SLoGin 修正null设备以及zero设备无法open、行为不符合预期的问题 (#314) 285*5db5a565SLoGin 286*5db5a565SLoGincommit 4da3758acf0327d429dfce3d313b50c2e0fc7723 287*5db5a565SLoGinAuthor: Chiichen <39649411+Chiichen@users.noreply.github.com> 288*5db5a565SLoGinDate: Wed Aug 2 14:29:59 2023 +0800 289*5db5a565SLoGin 290*5db5a565SLoGin 修复了wait4的异常报错 (#312) 291*5db5a565SLoGin 292*5db5a565SLoGin * 修复了wait4的异常报错 293*5db5a565SLoGin 294*5db5a565SLoGincommit 821bb9a2dcfd28f9878d53ba722bdf164cf00f69 295*5db5a565SLoGinAuthor: Xshine <caijiaxin@dragonos.org> 296*5db5a565SLoGinDate: Fri Jul 28 17:51:05 2023 +0800 297*5db5a565SLoGin 298*5db5a565SLoGin 增加 ListenTable 来检测端口占用 (#291) 299*5db5a565SLoGin 300*5db5a565SLoGin * 增加 ListenTable 来检测端口占用 301*5db5a565SLoGin 302*5db5a565SLoGin 303*5db5a565SLoGin * 使用Arc封装GlobalSocketHandle 304*5db5a565SLoGin 305*5db5a565SLoGin * 删除 listen 处的端口检测逻辑,延至实现端口复用时完成 306*5db5a565SLoGin 307*5db5a565SLoGin * 设立两张表,分别记录TCP和UDP的端口占用 308*5db5a565SLoGin 309*5db5a565SLoGin * 实现 meatadata 相关逻辑 310*5db5a565SLoGin 311*5db5a565SLoGin * 实现socket关闭时,端口在表中移除 312*5db5a565SLoGin 313*5db5a565SLoGin * 使用端口管理器重构端口记录表 314*5db5a565SLoGin 315*5db5a565SLoGin * 修正与RawSocket相关的端口管理逻辑 316*5db5a565SLoGin 317*5db5a565SLoGin * 补充测试文件 318*5db5a565SLoGin 319*5db5a565SLoGin * 修正 unbind_port 在逻辑错误 320*5db5a565SLoGin 321*5db5a565SLoGin * 修正格式问题 322*5db5a565SLoGin 323*5db5a565SLoGin --------- 324*5db5a565SLoGin 325*5db5a565SLoGin Co-authored-by: longjin <longjin@RinGoTek.cn> 326*5db5a565SLoGin 327*5db5a565SLoGincommit 7cc4a02c7ff7bafd798b185beb7b0c2986b9f32f 328*5db5a565SLoGinAuthor: zhaoyao73 <zhaoyao73@users.noreply.github.com> 329*5db5a565SLoGinDate: Fri Jul 28 03:44:45 2023 -0400 330*5db5a565SLoGin 331*5db5a565SLoGin fix arch_try_cmpxchg macro declaration (#307) 332*5db5a565SLoGin 333*5db5a565SLoGin fix arch_try_cmpxchg in atomic_cmpxchg 334*5db5a565SLoGin 335*5db5a565SLoGin Co-authored-by: Yao Zhao <dragonlinux@gmail.com> 336*5db5a565SLoGin 337*5db5a565SLoGincommit a30434f5201ca4c60b9515c8c23444fea3b5a8c6 338*5db5a565SLoGinAuthor: zhaoyao73 <zhaoyao73@users.noreply.github.com> 339*5db5a565SLoGinDate: Tue Jul 25 10:02:42 2023 -0400 340*5db5a565SLoGin 341*5db5a565SLoGin fix some script bugs (#304) 342*5db5a565SLoGin 343*5db5a565SLoGin add arch linux prerequisited packages 344*5db5a565SLoGin 345*5db5a565SLoGin Co-authored-by: Yao Zhao <dragonlinux@gmail.com> 346*5db5a565SLoGin 347*5db5a565SLoGincommit 40fe15e0953f989ccfeb74826d61621d43dea6bb 348*5db5a565SLoGinAuthor: LoGin <longjin@DragonOS.org> 349*5db5a565SLoGinDate: Sat Jul 22 16:27:02 2023 +0800 350*5db5a565SLoGin 351*5db5a565SLoGin 新的内存管理模块 (#303) 352*5db5a565SLoGin 353*5db5a565SLoGin   实现了具有优秀架构设计的新的内存管理模块,对内核空间和用户空间的内存映射、分配、释放、管理等操作进行了封装,使得内核开发者可以更加方便地进行内存管理。 354*5db5a565SLoGin 355*5db5a565SLoGin   内存管理模块主要由以下类型的组件组成: 356*5db5a565SLoGin 357*5db5a565SLoGin - **硬件抽象层(MemoryManagementArch)** - 提供对具体处理器架构的抽象,使得内存管理模块可以在不同的处理器架构上运行 358*5db5a565SLoGin - **页面映射器(PageMapper)**- 提供对虚拟地址和物理地址的映射,以及页表的创建、填写、销毁、权限管理等操作。分为两种类型:内核页表映射器(KernelMapper)和用户页表映射器(位于具体的用户地址空间结构中) 359*5db5a565SLoGin - **页面刷新器(PageFlusher)** - 提供对页表的刷新操作(整表刷新、单页刷新、跨核心刷新) 360*5db5a565SLoGin - **页帧分配器(FrameAllocator)** - 提供对页帧的分配、释放、管理等操作。具体来说,包括BumpAllocator、BuddyAllocator 361*5db5a565SLoGin - **小对象分配器** - 提供对小内存对象的分配、释放、管理等操作。指的是内核里面的SlabAllocator (SlabAllocator的实现目前还没有完成) 362*5db5a565SLoGin - **MMIO空间管理器** - 提供对MMIO地址空间的分配、管理操作。(目前这个模块待进一步重构) 363*5db5a565SLoGin - **用户地址空间管理机制** - 提供对用户地址空间的管理。 364*5db5a565SLoGin - VMA机制 - 提供对用户地址空间的管理,包括VMA的创建、销毁、权限管理等操作 365*5db5a565SLoGin - 用户映射管理 - 与VMA机制共同作用,管理用户地址空间的映射 366*5db5a565SLoGin - **系统调用层** - 提供对用户空间的内存管理系统调用,包括mmap、munmap、mprotect、mremap等 367*5db5a565SLoGin - **C接口兼容层** - 提供对原有的C代码的接口,是的C代码能够正常运行。 368*5db5a565SLoGin 369*5db5a565SLoGin 370*5db5a565SLoGin 除上面的新增内容以外,其它的更改内容: 371*5db5a565SLoGin - 新增二进制加载器,以及elf的解析器 372*5db5a565SLoGin - 解决由于local_irq_save、local_irq_restore函数的汇编不规范导致影响栈行为的bug。 373*5db5a565SLoGin - 解决local_irq_save未关中断的错误。 374*5db5a565SLoGin - 修复sys_gettimeofday对timezone参数的处理的bug 375*5db5a565SLoGin 376*5db5a565SLoGin --------- 377*5db5a565SLoGin 378*5db5a565SLoGin Co-authored-by: kong <kongweichao@dragonos.org> 379*5db5a565SLoGin 380*5db5a565SLoGincommit bb5f098a864cee36b7d2c1ab9c029c0280d94a8a 381*5db5a565SLoGinAuthor: LoGin <longjin@DragonOS.org> 382*5db5a565SLoGinDate: Sat Jul 22 16:24:55 2023 +0800 383*5db5a565SLoGin 384*5db5a565SLoGin Revert "新的内存管理模块 (#301)" (#302) 385*5db5a565SLoGin 386*5db5a565SLoGin This reverts commit d8ad0a5e7724469abd5cc3cf271993538878033e. 387*5db5a565SLoGin 388*5db5a565SLoGincommit d8ad0a5e7724469abd5cc3cf271993538878033e 389*5db5a565SLoGinAuthor: LoGin <longjin@DragonOS.org> 390*5db5a565SLoGinDate: Sat Jul 22 16:22:17 2023 +0800 391*5db5a565SLoGin 392*5db5a565SLoGin 新的内存管理模块 (#301) 393*5db5a565SLoGin 394*5db5a565SLoGin   实现了具有优秀架构设计的新的内存管理模块,对内核空间和用户空间的内存映射、分配、释放、管理等操作进行了封装,使得内核开发者可以更加方便地进行内存管理。 395*5db5a565SLoGin 396*5db5a565SLoGin   内存管理模块主要由以下类型的组件组成: 397*5db5a565SLoGin 398*5db5a565SLoGin - **硬件抽象层(MemoryManagementArch)** - 提供对具体处理器架构的抽象,使得内存管理模块可以在不同的处理器架构上运行 399*5db5a565SLoGin - **页面映射器(PageMapper)**- 提供对虚拟地址和物理地址的映射,以及页表的创建、填写、销毁、权限管理等操作。分为两种类型:内核页表映射器(KernelMapper)和用户页表映射器(位于具体的用户地址空间结构中) 400*5db5a565SLoGin - **页面刷新器(PageFlusher)** - 提供对页表的刷新操作(整表刷新、单页刷新、跨核心刷新) 401*5db5a565SLoGin - **页帧分配器(FrameAllocator)** - 提供对页帧的分配、释放、管理等操作。具体来说,包括BumpAllocator、BuddyAllocator 402*5db5a565SLoGin - **小对象分配器** - 提供对小内存对象的分配、释放、管理等操作。指的是内核里面的SlabAllocator (SlabAllocator的实现目前还没有完成) 403*5db5a565SLoGin - **MMIO空间管理器** - 提供对MMIO地址空间的分配、管理操作。(目前这个模块待进一步重构) 404*5db5a565SLoGin - **用户地址空间管理机制** - 提供对用户地址空间的管理。 405*5db5a565SLoGin - VMA机制 - 提供对用户地址空间的管理,包括VMA的创建、销毁、权限管理等操作 406*5db5a565SLoGin - 用户映射管理 - 与VMA机制共同作用,管理用户地址空间的映射 407*5db5a565SLoGin - **系统调用层** - 提供对用户空间的内存管理系统调用,包括mmap、munmap、mprotect、mremap等 408*5db5a565SLoGin - **C接口兼容层** - 提供对原有的C代码的接口,是的C代码能够正常运行。 409*5db5a565SLoGin 410*5db5a565SLoGin 411*5db5a565SLoGin 除上面的新增内容以外,其它的更改内容: 412*5db5a565SLoGin - 新增二进制加载器,以及elf的解析器 413*5db5a565SLoGin - 解决由于local_irq_save、local_irq_restore函数的汇编不规范导致影响栈行为的bug。 414*5db5a565SLoGin - 解决local_irq_save未关中断的错误。 415*5db5a565SLoGin - 修复sys_gettimeofday对timezone参数的处理的bug 416*5db5a565SLoGin 417*5db5a565SLoGincommit 0663027b111ffb6ff93becd60ffef1e2b8fbd4c6 418*5db5a565SLoGinAuthor: TingHuang <92705854+TingSHub@users.noreply.github.com> 419*5db5a565SLoGinDate: Wed Jul 12 12:49:45 2023 +0800 420*5db5a565SLoGin 421*5db5a565SLoGin 注册串口设备,创建字符设备框架(#290) 422*5db5a565SLoGin 423*5db5a565SLoGin * 按照rust规范修改两个函数名称 424*5db5a565SLoGin 425*5db5a565SLoGin * 修改一些函数句柄以符合rust规范 426*5db5a565SLoGin 427*5db5a565SLoGin * 添加字符设备相关 428*5db5a565SLoGin 429*5db5a565SLoGin * 添加字符设备相关文件 430*5db5a565SLoGin 431*5db5a565SLoGin * 添加字符设备驱动框架代码 432*5db5a565SLoGin 433*5db5a565SLoGin * 将串口注册 434*5db5a565SLoGin 435*5db5a565SLoGin * 规范代码 436*5db5a565SLoGin 437*5db5a565SLoGincommit cc36cf4a186be834e6c2ab857b9b9501ddb8b1eb 438*5db5a565SLoGinAuthor: YJwu2023 <yujianwu2019@gmail.com> 439*5db5a565SLoGinDate: Sat Jul 8 17:22:42 2023 +0800 440*5db5a565SLoGin 441*5db5a565SLoGin PCI设备中断重构,删去USB相关代码 (#285) 442*5db5a565SLoGin 443*5db5a565SLoGin * 修复ecam无法获取MCFG table的问题 444*5db5a565SLoGin 445*5db5a565SLoGin * 完善pcie 446*5db5a565SLoGin 447*5db5a565SLoGin * 完善irq的错误检测机制 448*5db5a565SLoGin 449*5db5a565SLoGincommit 2311e2f30048d09250afc3e2e4e7029627996655 450*5db5a565SLoGinAuthor: 櫻井桃華 <89176634+TihayaKousaka@users.noreply.github.com> 451*5db5a565SLoGinDate: Fri Jul 7 22:50:46 2023 +0800 452*5db5a565SLoGin 453*5db5a565SLoGin 修改makefile通过编译 (#287) 454*5db5a565SLoGin 455*5db5a565SLoGincommit 36fd013004ee0bd5fc7cfb452ba22531a83a859c 456*5db5a565SLoGinAuthor: houmkh <1119644616@qq.com> 457*5db5a565SLoGinDate: Sat Jun 17 22:48:15 2023 +0800 458*5db5a565SLoGin 459*5db5a565SLoGin 实现gettimeofday()系统调用和clocksource+timekeeping子模块 (#278) 460*5db5a565SLoGin 461*5db5a565SLoGin - 实现gettimeofday()系统调用 462*5db5a565SLoGin - 实现clocksource+timekeeping子模块部分功能 463*5db5a565SLoGin - 实现了timespec转换成日期时间 464*5db5a565SLoGin 465*5db5a565SLoGincommit a55ac7b928a6ca08483bbb3355bea55f1446ccab 466*5db5a565SLoGinAuthor: LoGin <longjin@DragonOS.org> 467*5db5a565SLoGinDate: Tue Jun 6 17:44:54 2023 +0800 468*5db5a565SLoGin 469*5db5a565SLoGin Update issue templates (#277) 470*5db5a565SLoGin 471*5db5a565SLoGincommit 5f57834372f6cb720ba14103effa4799e195a963 472*5db5a565SLoGinAuthor: Tptogiar <2528891112@qq.com> 473*5db5a565SLoGinDate: Tue Jun 6 16:41:02 2023 +0800 474*5db5a565SLoGin 475*5db5a565SLoGin Makefile: 根目录下添加make help命令 (#271) 476*5db5a565SLoGin 477*5db5a565SLoGin * Makefile: 根目录下添加make help命令 478*5db5a565SLoGin 479*5db5a565SLoGin * Makefile: 补充根目录Makefile的help命令 480*5db5a565SLoGin 481*5db5a565SLoGincommit aa0367d69e15989684109c5b454e85da9ecb1975 482*5db5a565SLoGinAuthor: LoGin <longjin@DragonOS.org> 483*5db5a565SLoGinDate: Tue May 30 10:21:11 2023 +0800 484*5db5a565SLoGin 485*5db5a565SLoGin 新的ipi功能&kick_cpu功能的重写 (#274) 486*5db5a565SLoGin 487*5db5a565SLoGincommit bb24249faabc5006784aa98ca17b4cbdcb788c65 488*5db5a565SLoGinAuthor: LoGin <longjin@DragonOS.org> 489*5db5a565SLoGinDate: Sun May 28 23:00:37 2023 +0800 490*5db5a565SLoGin 491*5db5a565SLoGin 添加AlignBox和int_like宏 (#272) 492*5db5a565SLoGin 493*5db5a565SLoGincommit ab5c8ca46db8e7d4793a9791292122b0b9684274 494*5db5a565SLoGinAuthor: login <longjin@DragonOS.org> 495*5db5a565SLoGinDate: Wed May 24 17:05:33 2023 +0800 496*5db5a565SLoGin 497*5db5a565SLoGin 重构系统调用模块 (#267) 498*5db5a565SLoGin 499*5db5a565SLoGin * 完成系统调用模块重构 500*5db5a565SLoGin 501*5db5a565SLoGin * 更新github workflow 502*5db5a565SLoGin 503*5db5a565SLoGincommit 660a04cef803fd73e9b294b30a96421b021a4b9b 504*5db5a565SLoGinAuthor: login <longjin@DragonOS.org> 505*5db5a565SLoGinDate: Sat May 13 21:17:12 2023 +0800 506*5db5a565SLoGin 507*5db5a565SLoGin 新增http server (#265) 508*5db5a565SLoGin 509*5db5a565SLoGin * 1.修复了当传入ahci驱动的缓冲区地址为用户缓冲区时,产生的内存越界问题.(采用分配内核缓冲区的方式临时解决) 510*5db5a565SLoGin 2.新增http server 511*5db5a565SLoGin 512*5db5a565SLoGin * 把libssl-dev添加到bootstrap.sh 513*5db5a565SLoGin 514*5db5a565SLoGin * http_server增加对父级相对路径的安全检查,防止访问系统内的其他文件 515*5db5a565SLoGin 516*5db5a565SLoGin * 检查空指针情况 517*5db5a565SLoGin 518*5db5a565SLoGin * 解决由于链接时,crt*.o未按照升序排列导致init段链接错误的问题 519*5db5a565SLoGin 520*5db5a565SLoGincommit 49249f4ec94fad7baf923aed68d9a7b2da3de3d4 521*5db5a565SLoGinAuthor: Bullet <93781792+GP-Bullet@users.noreply.github.com> 522*5db5a565SLoGinDate: Sat May 13 09:55:24 2023 +0800 523*5db5a565SLoGin 524*5db5a565SLoGin 把调度器实例的裸指针改为Option (#262) 525*5db5a565SLoGin 526*5db5a565SLoGincommit bfafc102798ab1968ccf6b04315d8d3359a70ca8 527*5db5a565SLoGinAuthor: login <longjin@DragonOS.org> 528*5db5a565SLoGinDate: Thu May 11 17:41:42 2023 +0800 529*5db5a565SLoGin 530*5db5a565SLoGin 修复读取stdin时,无法正常读取的问题。 (#264) 531*5db5a565SLoGin 532*5db5a565SLoGincommit 7285c927d95bb4b5c692c51a8f86c47009d07667 533*5db5a565SLoGinAuthor: login <longjin@DragonOS.org> 534*5db5a565SLoGinDate: Thu May 11 16:17:58 2023 +0800 535*5db5a565SLoGin 536*5db5a565SLoGin 添加dadk支持 (#263) 537*5db5a565SLoGin 538*5db5a565SLoGin * 引入dadk,使用dadk0.1.1来编译test-relibc程序 539*5db5a565SLoGin 540*5db5a565SLoGin * 由于gitee仓库体积限制导致无法继续使用gitee上的rust索引,因此更换为清华源 541*5db5a565SLoGin 542*5db5a565SLoGin * github workflow的环境中,安装dadk 543*5db5a565SLoGin 544*5db5a565SLoGin * Auto configure dragonos rust toolchain 545*5db5a565SLoGin 546*5db5a565SLoGincommit b11bb1b25676f528ec1b0e1da0af82b4652f70c4 547*5db5a565SLoGinAuthor: login <longjin@DragonOS.org> 548*5db5a565SLoGinDate: Sun May 7 22:20:33 2023 +0800 549*5db5a565SLoGin 550*5db5a565SLoGin 固定编译工具链、修复由于新版rust编译器问题导致的报错。 (#258) 551*5db5a565SLoGin 552*5db5a565SLoGin * 固定编译工具链、修复由于新版rust编译器问题导致的报错。 553*5db5a565SLoGin 554*5db5a565SLoGin * 完善github workflow环境配置 555*5db5a565SLoGin 556*5db5a565SLoGin```