Vitus
832c04a23f
feat(nix): 添加nix alias,formatter,以及更好的提示与原make命令集成 ( #1661 )
...
Build multiversion docs / build-multiversion (push) Waiting to run
Details
Sync to CNB.cool / sync (push) Waiting to run
Details
Test MM (Host) / Build slab_stress (host) (push) Waiting to run
Details
Test MM (Host) / Slab allocator long-run (valgrind) - size=${{ matrix.size }}, seed=${{ matrix.seed }} (1, 128) (push) Blocked by required conditions
Details
Test MM (Host) / Slab allocator long-run (valgrind) - size=${{ matrix.size }}, seed=${{ matrix.seed }} (1, 255) (push) Blocked by required conditions
Details
Test MM (Host) / Slab allocator long-run (valgrind) - size=${{ matrix.size }}, seed=${{ matrix.seed }} (1, 256) (push) Blocked by required conditions
Details
Test MM (Host) / Slab allocator long-run (valgrind) - size=${{ matrix.size }}, seed=${{ matrix.seed }} (1, 64) (push) Blocked by required conditions
Details
Test MM (Host) / Slab allocator long-run (valgrind) - size=${{ matrix.size }}, seed=${{ matrix.seed }} (2, 128) (push) Blocked by required conditions
Details
Test MM (Host) / Slab allocator long-run (valgrind) - size=${{ matrix.size }}, seed=${{ matrix.seed }} (2, 255) (push) Blocked by required conditions
Details
Test MM (Host) / Slab allocator long-run (valgrind) - size=${{ matrix.size }}, seed=${{ matrix.seed }} (2, 256) (push) Blocked by required conditions
Details
Test MM (Host) / Slab allocator long-run (valgrind) - size=${{ matrix.size }}, seed=${{ matrix.seed }} (2, 64) (push) Blocked by required conditions
Details
Test MM (Host) / Slab allocator long-run (valgrind) - size=${{ matrix.size }}, seed=${{ matrix.seed }} (3, 128) (push) Blocked by required conditions
Details
Test MM (Host) / Slab allocator long-run (valgrind) - size=${{ matrix.size }}, seed=${{ matrix.seed }} (3, 255) (push) Blocked by required conditions
Details
Test MM (Host) / Slab allocator long-run (valgrind) - size=${{ matrix.size }}, seed=${{ matrix.seed }} (3, 256) (push) Blocked by required conditions
Details
Test MM (Host) / Slab allocator long-run (valgrind) - size=${{ matrix.size }}, seed=${{ matrix.seed }} (3, 64) (push) Blocked by required conditions
Details
Test x86_64 / Integration Test (push) Waiting to run
Details
Docs Translation / translate-and-pr (push) Has been cancelled
Details
* - chore:加了一条一键启动的命令
* chore(nix): 添加nixfmt格式化器并整合devShell配置
- 添加treefmt-nix和nixfmt-rfc-style作为项目formatter
- 将tools/nix-dev-shell的devShell配置合并到根目录flake.nix
- 新增rust-toolchain到devShell的buildInputs
- 格式化所有.nix文件并排除.direnv目录
- 移除已废弃的tools/nix-dev-shell目录
* fix
* fix
* fix:构建完后直接退出
fix: qemu 参数分开写的不支持问题
* fix
* fix
* fix:delete result
* remove 快速启动 hint
* Update Makefile
---------
Co-authored-by: Samuel Dai <samuka007@dragonos.org>
2026-01-28 00:17:18 +08:00
LoGin
0f5163e5b2
feat: 改进VM状态管理和GDB调试支持 ( #1638 )
...
- 新增VM状态管理功能,支持获取网络端口、PID和GDB端口
- 改进GDB调试支持,自动分配端口并支持动态连接
- 优化QEMU启动脚本,使用数组参数提高可维护性
- 修复监控脚本的环境变量依赖问题
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-13 13:44:01 +08:00
Samuel Dai
77eb20f7b4
fix(build): Add user build step to run-nographic target ( #1604 )
2026-01-05 00:00:13 +08:00
LoGin
ccd159f815
fix(net): 修复Unix流套接字SCM记录边界处理 ( #1563 )
...
Build multiversion docs / build-multiversion (push) Waiting to run
Details
Sync to CNB.cool / sync (push) Waiting to run
Details
Test x86_64 / Integration Test (push) Waiting to run
Details
- 修复Unix流套接字SCM记录边界处理,确保recvmsg正确合并数据
- 修复write系统调用零长度写入的语义
- 修复open系统调用对socket文件的处理
- 更新Makefile构建配置
- 启用gVisor Unix套接字测试
Signed-off-by: longjin <longjin@DragonOS.org>
2025-12-27 11:37:14 +08:00
Samuel Dai
f031e61716
feat(build): replace rootfs and user space app creation with nix base scripts ( #1505 )
...
Implement
- userland build in nix, with cross platform support and
non-previleged disk gen
- qemu start command in nix
- nix develop envrionment for make kernel
- document build environment defined by nix
Next Steps
- 减小rootfs占用nix store的体积
- deb包的打包兼容用的函数
- 更加灵活的构建依赖注入
- 保留先前系统内修改的内容
- nix rootfs build与qemu启动适配 vnc模式
- 适配 riscv64 构建
- Arm MacOS上的开发兼容
2025-12-26 18:36:13 +08:00
LoGin
f2cca87d2b
refactor(wait_queue): 重构等待队列机制,引入Waiter/Waker模式 ( #1452 )
...
* refactor(wait_queue): 重构等待队列机制,引入Waiter/Waker模式
- 重构WaitQueue,引入Waiter/Waker模式避免唤醒丢失
- 统一等待接口,提供wait_event_interruptible/uninterruptible方法
- 重构futex、epoll、eventfd、semaphore、completion等模块使用新等待队列
- 优化进程等待子进程退出逻辑,使用新等待队列接口
- 添加等待队列设计文档说明新机制
Signed-off-by: longjin <longjin@DragonOS.org>
* feat: 添加SKIP_GRUB选项以支持在CI或无图形界面环境中跳过GRUB安装
Signed-off-by: longjin <longjin@DragonOS.org>
* fix: 修复信号处理和futex唤醒的错误码
- 在sys_rt_sigtimedwait中消费信号后及时刷新HAS_PENDING_SIGNAL状态,避免后续等待路
径误判
- 将futex可中断唤醒的错误码从ERESTARTSYS改为EINTR,以符合Linux语义
Signed-off-by: longjin <longjin@DragonOS.org>
* ci: Update Docker image source in test-x86 workflow
- Changed the Docker image source from `docker.cnb.cool/dragonos-community/dragonos/dragonos-dev:v1.19` to `dragonos/dragonos-dev:v1.19` for consistency in CI workflows.
Signed-off-by: longjin <longjin@DragonOS.org>
---------
Signed-off-by: longjin <longjin@DragonOS.org>
2025-12-10 14:04:05 +08:00
Yuming Jiang
9420fe09cd
fix(gvisor): 修复自动化开启/关闭 gvisor syscall测例打包的脚本 ( #1405 )
...
* fix(tools): 修复缺失 /tmp 目录导致 gvisor 测例运行错误的问题
- 在 `write_disk_image.sh` 中添加创建 /tmp 目录的命令。
Signed-off-by: yuming <mingjiangyu1@qq.com>
* ci: 优化启用/关闭gvisor测试的脚本
Signed-off-by: longjin <longjin@DragonOS.org>
---------
Signed-off-by: yuming <mingjiangyu1@qq.com>
Signed-off-by: longjin <longjin@DragonOS.org>
Co-authored-by: longjin <longjin@DragonOS.org>
2025-11-26 00:00:04 +08:00
LoGin
0874383697
feat(ci): 添加测试结果上传功能并优化构建流程 ( #1380 )
...
- 新增测试结果解析和上传工具,支持多种测试框架格式
- 在CI工作流中添加测试结果上传步骤
- 引入磁盘节省模式,优化构建缓存管理
- 更新DADK版本要求至0.5.1
Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-17 22:01:13 +08:00
LoGin
8215106866
ci: 增强syscall测试监控脚本的健壮性 ( #1364 )
...
- 添加超时配置和进程自动检测机制
- 改进资源清理和错误处理逻辑
- 增加详细的诊断信息和进度报告
- 优化测试流程监控和超时处理
Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-12 15:31:15 +08:00
黄铭涛
b74420f48e
feat(test): 增加系统启动后执行syscall集成测试的make命令并将其加入流水线中 ( #1306 )
...
* feat(test): 增加系统启动后执行syscall集成测试的make命令并将其加入流水线中
2025-10-09 22:34:51 +08:00
LoGin
33c42e7dfb
refactor(kernel): 增加内核栈大小从0x4000到0x8000 ( #1230 )
...
* refactor(kernel): 增加内核栈大小从0x4000到0x8000
修改KernelStack的SIZE和ALIGN常量值,将内核栈大小从16KB增加到32KB。
Signed-off-by: longjin <longjin@DragonOS.org>
* fix: 修复update submodules的时候没能正确checkout到远程的commit的问题
Signed-off-by: longjin <longjin@DragonOS.org>
---------
Signed-off-by: longjin <longjin@DragonOS.org>
2025-07-08 00:28:21 +08:00
火花
fcb5bf4496
Feat(process): 增加ProcessGroup以及Session机制 ( #1115 )
...
* 添加make run-nographic
* 添加session和processgroup结构体
* 添加一些有关进程组的syscall
* 在fork中加入set_group
* 修改broadcast未实现的信息
* 添加对kill缺失的进程组的逻辑的补充
2025-04-22 13:22:42 +08:00
LoGin
e80796eb82
feat: la64 boot ( #1132 )
...
* la64能够进入到kernel_main
* ci: 添加为ubuntu编译qemu-loongarch64的脚本
* feat: la64能输出hello world
* la64 安装gcc && 配置github ci
* chore: 更新CI工作流和构建脚本中的Docker镜像版本至v1.10
Signed-off-by: longjin <longjin@DragonOS.org>
2025-04-20 18:51:45 +08:00
LoGin
e8b1db320d
chore: Bump dadk to 0.2.0 ( #1058 )
...
# 概述
把dadk版本升级到0.2.0
dadk 0.2.0能够提升编译速度,并且支持使用dadk对内核进行profiling。
新版dadk的文档: https://docs.dragonos.org.cn/p/dadk/
# 注意
这是一个breaking change,升级后,将无法使用dadk 0.2.0去编译旧的项目。如有需要,请手动降级到dadk 0.1.11:
```shell
cargo install --git https://git.mirrors.dragonos.org.cn/DragonOS-Community/DADK --tag v0.1.11
```
# 更改列表
* chore: 把管理用户程序编译的dadk配置文件改为新格式的
* feat: 使用新版dadk来创建\挂载\卸载磁盘镜像
* chore: bump dadk min version to 0.2.0
* chore: fix ci
* chore: 更新github ci镜像到1.7
* doc: 添加文档
---------
Co-Authored-by: xuzihao <xuzihao@dragonos.org>
Signed-off-by: longjin <longjin@DragonOS.org>
2024-11-27 01:30:31 +08:00
LoGin
d031d46fd9
feat: 添加serial console,支持non-graphic启动 ( #947 )
...
Signed-off-by: longjin <longjin@dragonos.org>
2024-10-01 11:35:48 +08:00
EMasi
e35f8aa1b6
fix: Fix make update-submodules-by-mirror Error ( #928 )
...
* remove --init suffix in update-submodules-by-mirror
2024-09-25 01:38:31 +08:00
LoGin
703ce5a77c
fix: 修复由于升级到2024-07-23工具链之后,某些机器上面内核运行一直fault的问题。 ( #870 )
...
* fix: 修复由于升级到2024-07-23工具链之后,某些机器上面内核运行一直fault的问题。
2024-07-27 17:34:05 +08:00
LoGin
43ef2a0d2b
添加riscv64的github workflow ( #499 )
...
* 添加riscv64的github workflow
2024-01-21 18:45:07 +08:00
R0ronoa
070e991008
解决由于Makefile问题导致make run-uefi无法正常启动的问题 ( #473 )
2023-12-22 16:01:23 +08:00
LoGin
1a72a751b1
在riscv输出hello world ( #466 )
...
增加了以下内容:
- SBI驱动
- 把内核的rust工具链升级到2023-08-15版本
- 输出riscv的helloworld
- 设置内核是PIC的
2023-12-07 02:13:22 +08:00
LoGin
09d2bf52a6
update-dragon-stub-bf2617 ( #463 )
2023-12-03 21:27:43 +08:00
LoGin
af35431005
使用submodule引入DragonStub ( #462 )
...
* 修正构建系统文档: 使用repo工具克隆代码
* 使用submodule管理
2023-12-03 17:16:03 +08:00
LoGin
4fda81ce81
使得DragonOS kernel 能为riscv64编译通过(尚未能启动) ( #457 )
...
* 使得DragonOS kernel 能为riscv64编译通过(尚未能启动)
* 修正了系统调用号声明不正确的问题,同时添加了编译配置文档
2023-11-25 12:07:39 +08:00
LoGin
c75089286e
调整脚本,使得能够创建riscv的磁盘镜像,并引导进入riscv下的grub ( #450 )
...
* 安装musl toolchain以及riscv相关的工具链
* 调整脚本,使得能够创建riscv的磁盘镜像,并引导进入riscv下的grub
```shell
export ARCH=riscv64
make write_diskimage
make qemu
```
即可在serial_opt.txt看到进入grub的提示信息
2023-11-21 13:42:18 +08:00
LoGin
e26ca418df
把内核构建脚本单独独立成一个crate ( #444 )
2023-11-17 11:26:26 +08:00
LoGin
7b32f5080f
增加内存分配日志监视器 ( #424 )
...
* 完成内存日志监视,并输出日志到文件
* 修复进程退出后,procfs查看进程status文件会崩溃的问题
* 修复signal唤醒进程的判断条件问题
2023-11-07 21:39:27 +08:00
LoGin
e92d022810
解决设置rust workspace带来的“工具链不一致”的问题 ( #345 )
...
更改workflow
2023-08-26 21:36:13 +08:00
LoGin
40fe15e095
新的内存管理模块 ( #303 )
...
  实现了具有优秀架构设计的新的内存管理模块,对内核空间和用户空间的内存映射、分配、释放、管理等操作进行了封装,使得内核开发者可以更加方便地进行内存管理。
  内存管理模块主要由以下类型的组件组成:
- **硬件抽象层(MemoryManagementArch)** - 提供对具体处理器架构的抽象,使得内存管理模块可以在不同的处理器架构上运行
- **页面映射器(PageMapper)**- 提供对虚拟地址和物理地址的映射,以及页表的创建、填写、销毁、权限管理等操作。分为两种类型:内核页表映射器(KernelMapper)和用户页表映射器(位于具体的用户地址空间结构中)
- **页面刷新器(PageFlusher)** - 提供对页表的刷新操作(整表刷新、单页刷新、跨核心刷新)
- **页帧分配器(FrameAllocator)** - 提供对页帧的分配、释放、管理等操作。具体来说,包括BumpAllocator、BuddyAllocator
- **小对象分配器** - 提供对小内存对象的分配、释放、管理等操作。指的是内核里面的SlabAllocator (SlabAllocator的实现目前还没有完成)
- **MMIO空间管理器** - 提供对MMIO地址空间的分配、管理操作。(目前这个模块待进一步重构)
- **用户地址空间管理机制** - 提供对用户地址空间的管理。
- VMA机制 - 提供对用户地址空间的管理,包括VMA的创建、销毁、权限管理等操作
- 用户映射管理 - 与VMA机制共同作用,管理用户地址空间的映射
- **系统调用层** - 提供对用户空间的内存管理系统调用,包括mmap、munmap、mprotect、mremap等
- **C接口兼容层** - 提供对原有的C代码的接口,是的C代码能够正常运行。
除上面的新增内容以外,其它的更改内容:
- 新增二进制加载器,以及elf的解析器
- 解决由于local_irq_save、local_irq_restore函数的汇编不规范导致影响栈行为的bug。
- 解决local_irq_save未关中断的错误。
- 修复sys_gettimeofday对timezone参数的处理的bug
---------
Co-authored-by: kong <kongweichao@dragonos.org>
2023-07-22 16:27:02 +08:00
LoGin
bb5f098a86
Revert "新的内存管理模块 ( #301 )" ( #302 )
...
This reverts commit d8ad0a5e77 .
2023-07-22 16:24:55 +08:00
LoGin
d8ad0a5e77
新的内存管理模块 ( #301 )
...
  实现了具有优秀架构设计的新的内存管理模块,对内核空间和用户空间的内存映射、分配、释放、管理等操作进行了封装,使得内核开发者可以更加方便地进行内存管理。
  内存管理模块主要由以下类型的组件组成:
- **硬件抽象层(MemoryManagementArch)** - 提供对具体处理器架构的抽象,使得内存管理模块可以在不同的处理器架构上运行
- **页面映射器(PageMapper)**- 提供对虚拟地址和物理地址的映射,以及页表的创建、填写、销毁、权限管理等操作。分为两种类型:内核页表映射器(KernelMapper)和用户页表映射器(位于具体的用户地址空间结构中)
- **页面刷新器(PageFlusher)** - 提供对页表的刷新操作(整表刷新、单页刷新、跨核心刷新)
- **页帧分配器(FrameAllocator)** - 提供对页帧的分配、释放、管理等操作。具体来说,包括BumpAllocator、BuddyAllocator
- **小对象分配器** - 提供对小内存对象的分配、释放、管理等操作。指的是内核里面的SlabAllocator (SlabAllocator的实现目前还没有完成)
- **MMIO空间管理器** - 提供对MMIO地址空间的分配、管理操作。(目前这个模块待进一步重构)
- **用户地址空间管理机制** - 提供对用户地址空间的管理。
- VMA机制 - 提供对用户地址空间的管理,包括VMA的创建、销毁、权限管理等操作
- 用户映射管理 - 与VMA机制共同作用,管理用户地址空间的映射
- **系统调用层** - 提供对用户空间的内存管理系统调用,包括mmap、munmap、mprotect、mremap等
- **C接口兼容层** - 提供对原有的C代码的接口,是的C代码能够正常运行。
除上面的新增内容以外,其它的更改内容:
- 新增二进制加载器,以及elf的解析器
- 解决由于local_irq_save、local_irq_restore函数的汇编不规范导致影响栈行为的bug。
- 解决local_irq_save未关中断的错误。
- 修复sys_gettimeofday对timezone参数的处理的bug
2023-07-22 16:22:17 +08:00
Tptogiar
5f57834372
Makefile: 根目录下添加make help命令 ( #271 )
...
* Makefile: 根目录下添加make help命令
* Makefile: 补充根目录Makefile的help命令
2023-06-06 16:41:02 +08:00
HoshuChiu
6d345b7742
添加了qemu使用VNC作为图像输出的选项 ( #222 )
...
* 添加了qemu使用VNC作为图像输出的选项
* 设置vnc端口为5900
---------
Co-authored-by: longjin <longjin@RinGoTek.cn>
2023-04-02 15:55:24 +08:00
guanjinquan
2224c93ea9
完善libc,构建了OS-specific工具链,编译了基于gcc-11.3.0的DragonOS userland compiler,移植了mpfr,gmp,mpc库 ( #134 )
...
* 修改include路径
* 添加了创建libsysapi.a和/bin/sysroot/usr/include/+lib/的代码
* 修补.gitignore
* 删除多余项
* 优化脚本可读性
* 新增crt0 crti crtn
* 编译binutils所需的东西
* fflush()和fprintf()的简单实现
* 应用程序启动前,调用初始化libc的函数
* 自动创建sysroot
* 添加了stderr的初始化
* 修改了stderr的初始化
* 内核添加对stdio的简略处理
* 格式化代码
* 修正打开stdio文件描述符的问题
* bugfix: 修复fprintf忘记释放buf的问题
* 修复shell错误地把入口设置为main而不是_start的问题
* 新增__cxa_atexit (gcc要求libc提供这个)
* 增加putchar puts
* 更新写入磁盘镜像的脚本,默认无参数时,使用legacy方式安装
* 更新编译脚本
* stdio增加eof的定义
* 新增extern cplusplus
* mpfr gmp mpc 构建脚本
* 更新libsysapi.a为libc.a
* 加上ferror fopen fclose
* 更新移植的软件的构建脚本
* 更改build_gcc_toolchain.sh中的-save参数名为-save-cache
Co-authored-by: longjin <longjin@RinGoTek.cn>
2023-01-06 21:29:23 +08:00
guanjinquan
74bde36e01
Patch porting gcc v2 ( #124 )
...
* 更改编译器的Include路径,使得include时不需要加`<libc/src/include/>`前缀
* 修改include路径
Co-authored-by: longjin <longjin@RinGoTek.cn>
2022-12-31 17:35:39 +08:00
login
d4f3de93a2
使用Rust重构CFS调度器 ( #131 )
...
* 新建调度器的文件
* 把softirq vector移动到c文件中(原来在.h)
* 将进程切换方式改为“中断返回时切换”
* new:使用rust重构CFS
* 删除已经在smp中废弃的HPET中断转发函数
* 代码格式化
* 删除多余的dunce依赖
2022-12-31 17:26:12 +08:00
guanjinquan
5ed4cd4602
Patch gcc toolchain ( #111 )
...
* 添加了GCC_cross_compile——tool_chain
* - 解决环境变量路径拼接时,多了`/`的问题
- apt安装时增加-y,不需用户确认
* 解决添加环境变量的命令有误的问题
* 修正编译错误时,还会执行下一步的问题
* new: 编译完成后清理临时文件
* 更新makefile
* 调整:把grub安装在 $HOME/opt/dragonos-grub下
* new: 新增dockerfile
* 将镜像源换成中科大的(原因是清华的总是ban掉用于构建镜像的服务器的ip)
* 修改为基于debian bullseye构建
* 取消指定版本
* 修复MBR磁盘镜像未设置启动标志的bug
* 取消在docker中安装grub
* 安装grub的过程改到客户机上进行
* bootstrap.sh 添加--no-docker
* 使用新版的docker编译镜像
* 修补, 添加了一些关于gcc的check
Co-authored-by: longjin <longjin@RinGoTek.cn>
2022-12-22 21:09:12 +08:00
login
83a7aaa46b
删除rust_helloworld文件 ( #113 )
2022-12-17 16:31:50 +08:00
YJwu2023
38b341b8aa
新增32位uefi启动 ( #105 )
...
* 新增32位uefi启动
* 修复小bug
* 增加grub本地编译安装
* 增加本地grub编译安装脚本
* 修正小错误
* 修复空文件夹不上传的bug
2022-12-14 16:58:49 +08:00
YJwu2023
7f439c5ddb
增加uefi启动 ( #101 )
...
* 增加uefi启动
* 修改脚本
* uefi修改
* 删除错误的注释
* 修正写入磁盘镜像的脚本
* 修改X86_64为x86_64
Co-authored-by: longjin <longjin@RinGoTek.cn>
2022-12-09 16:08:54 +08:00
login
2813126e31
新增rust ffi ( #77 )
...
* 引入cargo
* 取消对Cargo.lock的跟踪
* 解决vscode报错问题
* new: rust的代码能够调用c语言的printk_color
* 1、将原本run.sh的工作拆解,变为几个不同的make命令
2、在docker镜像中编译rust
* 更改workflow
* update workflow
* new: 解决workflow无法通过编译的问题
2022-11-11 15:35:37 +08:00
login
e002152383
new: 在lib下引入一个rust的helloworld! ( #68 )
2022-10-24 21:29:58 +08:00
login
d328bfce6b
bugfix: 修正潜在的错误路径 ( #64 )
...
* bugfix: 修正潜在的错误路径
* 修正格式
2022-10-22 20:17:40 +08:00
longjin
fbe1e23e97
将makefile中的gcc字样用$(CC)环境变量代替
2022-10-16 11:08:32 +08:00
fslongjin
d60f1a8f80
bugfix: 用户态程序编译失败的问题
2022-09-12 14:55:45 +08:00
fslongjin
5652878249
bugfix: 用户态程序编译错误的问题
2022-09-11 21:28:19 +08:00
fslongjin
08df258142
bugfix: 编译错误时仍可启动虚拟机的问题
2022-09-01 15:44:30 +08:00
fslongjin
416a802b9c
new: xhci get descriptor
2022-08-30 20:34:52 +08:00
fslongjin
06af77bd79
fix: 解决了page的锁未被初始化的bug
2022-08-15 12:09:04 +08:00
fslongjin
1dd9195d69
new: vma反向映射
2022-08-15 01:42:34 +08:00
fslongjin
36d55511ba
更正优化级别
2022-08-03 17:23:30 +08:00