Commit Graph

65 Commits

Author SHA1 Message Date
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)
&emsp;&emsp;实现了具有优秀架构设计的新的内存管理模块,对内核空间和用户空间的内存映射、分配、释放、管理等操作进行了封装,使得内核开发者可以更加方便地进行内存管理。

&emsp;&emsp;内存管理模块主要由以下类型的组件组成:

- **硬件抽象层(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)
&emsp;&emsp;实现了具有优秀架构设计的新的内存管理模块,对内核空间和用户空间的内存映射、分配、释放、管理等操作进行了封装,使得内核开发者可以更加方便地进行内存管理。

&emsp;&emsp;内存管理模块主要由以下类型的组件组成:

- **硬件抽象层(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