LoGin
c875dac003
feat(net): 新增TCP_INFO支持并优化网络接口选择逻辑 ( #1623 )
...
* feat(net): 新增TCP_INFO支持并优化网络接口选择逻辑
- 新增TCP_INFO socket选项实现,提供详细的TCP连接状态信息
- 优化IPv4映射IPv6地址的处理逻辑
- 重构未指定地址绑定的网络接口选择算法
- 修复getsockopt缓冲区处理边界条件
- 更新smoltcp依赖版本至5a73cad
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-09 10:44:21 +08:00
LoGin
0ee965c8e9
feat(net): 重构网络子系统,引入NAPI机制与TCP socket改进 ( #1599 )
...
- 新增NAPI(New API)子系统,实现有界轮询机制,提升网络包处理性能
- 重构e1000e驱动,集成NAPI中断处理,移除旧的中断处理模块
- 改进TCP socket实现,支持self-connect、延迟关闭、backlog管理等Linux兼容特性
- 优化网络命名空间轮询线程,采用事件驱动与定时器混合模型
- 新增TCP listener backlog和TCP close defer机制,提升协议栈兼容性
- 修复epoll事件通知机制,避免竞态条件和唤醒丢失
- 升级smoltcp依赖,启用TCP Reno和Cubic拥塞控制算法
- 新增网络子系统设计文档,详细说明NAPI与NetNamespace Poll机制
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-07 22:50:48 +08:00
LoGin
d80a2321e6
feat(sched): 新增FIFO调度器实现及演示功能 ( #1606 )
...
- 新增FIFO调度器核心实现(fifo.rs),包含优先级队列管理和调度逻辑
- 在CFS调度器中添加set_next_task方法以支持FIFO切换
- 重构CFS调度器的pick_next_task算法,优化任务选择逻辑
- 在进程管理器中添加set_fifo_policy方法,支持内核线程设置FIFO策略
- 新增FIFO演示模块(fifo_demo.rs),展示FIFO调度器使用方式
- 在系统初始化时可选加载FIFO演示功能(通过fifo_demo特性控制)
- 更新调度器模块集成FIFO调度器,完善调度策略切换逻辑
- 修改sched_yield系统调用以支持FIFO调度器的yield操作
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-05 20:00:24 +08:00
LoGin
b1275e800a
feat(procfs): 新增/proc/net目录支持ARP缓存和协议列表查看 ( #1581 )
...
- 新增/proc/net/arp文件,显示ARP缓存表信息
- 新增/proc/net/protocols文件,显示支持的socket协议信息
- 新增neighbor模块提供ARP条目查询API
- 新增uapi/arp模块定义ARP硬件类型和标志位
- 更新smoltcp依赖以支持medium-ethernet特性
- 调整Unix流套接字缓冲区大小上限
Signed-off-by: longjin <longjin@DragonOS.org>
2025-12-30 19:12:36 +08:00
JingXuan_Wei
7bbcb4aa0e
fix(riscv64 platform):Fix several bugs on the VF2 platform and existing bugs in the RISCV architecture ( #1560 )
...
- Fix several bugs on the VF2 platform
- Fix some riscv bugs because of kexec codes.
Signed-off-by: JensenWei007 <jensenwei007@gmail.com>
2025-12-26 20:58:02 +08:00
LoGin
6060705f7c
docs: 新增发布助手能力说明文档和V0.4.0发行日志 ( #1533 )
...
- 新增`docs/agents/release_agent_capability.md`
文档,提供面向未来版本发布的通用“发布助手”能力说明和可复用模板
- 新增`docs/community/ChangeLog/V0.4.x/V0.4.0.md`
发行日志,详细记录V0.4.0版本的各项改进和变更
- 更新`docs/community/ChangeLog/index.rst`索引文件,添加V0.4.0版本条目
- 更新内核版本号至0.4.0(`kernel/Cargo.toml`和`kernel/Cargo.lock`)
- 更新`about`应用程序的版权信息和版本显示
Signed-off-by: longjin <longjin@DragonOS.org>
2025-12-22 19:52:20 +08:00
LoGin
b28f766956
feat(vfs): Implement append lock manager for file operations ( #1483 )
...
* feat(vfs): Implement append lock manager for file operations
- Introduced an `AppendLockManager` to ensure atomicity for append operations across filesystems, preventing data corruption in concurrent write scenarios.
- Updated file write methods to utilize the new append lock mechanism, ensuring that appending to files respects the latest end-of-file position.
- Enhanced `write_append` and `pwrite_append` methods to support forced append semantics, aligning with Linux behavior.
- Initialized the append lock manager during VFS initialization to ensure it is ready before any file write operations.
This addition improves the reliability of file operations in a multi-threaded environment, particularly for append scenarios.
Signed-off-by: longjin <longjin@DragonOS.org>
* feat(kernel): 添加jhash库并用于append_lock的哈希计算
Signed-off-by: longjin <longjin@DragonOS.org>
---------
Signed-off-by: longjin <longjin@DragonOS.org>
2025-12-16 23:55:53 +08:00
LoGin
30352ece95
doc: add 0.3.0 release log ( #1389 )
...
Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-20 00:58:06 +08:00
JingXuan_Wei
bb99d3f6ed
feat(kexec & initram):Add kexec and initram support for x86 architecture ( #1303 )
...
- Support embedding initram and using Ramfs as the file system for extracting initram
- Support kexec series system calls, including load series and reboot
- Support u-root as the root file system to boot in Go language
- Add sysfs such as boot_crams and memmap
- Add a series of peripheral system calls related to the above
Signed-off-by: JensenWei007 <jensenwei007@gmail.com>
2025-10-30 13:32:40 +08:00
火花
50a70e9424
feat(net): 桥接网络支持 ( #1287 )
...
* feat: 新增veth和bridge结构体,尚未详细测试
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat(net): 完善一下已有的bridge以及veth设备,增加一些调试信息
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat(net): 完善veth网卡驱动,能通过测例;简单修改vridge设备,尚未测试
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat(routing): 简单添加路由子系统,尚未完成
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat(veth): 增加veth默认对端路由
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat(socket): 恢复udp socket中的wait_queue等待
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat(net): 补充bridge的实现
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat(bridge): 更改测试程序
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat: 重命名测试程序
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat: 更改veth&beidge测试程序的toml
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat: 暂时添加route_iface以及route_table
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat: draft router
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat: 实现简单的路由功能,未详细测试
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat: 添加netlink框架,内核相应的处理逻辑以及读取写入用户空间尚未完成
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat(netlink): 完善netlink的读写部分,增加addr的内核处理逻辑
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat: 移动routing的位置
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat: 补充netlink的阻塞等待逻辑&&fmt
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat(netns): 添加网络命名空间
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat(netns): 删除全局路由,使用当前netns下的路由
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat(netlink): 将netlink socket移入netns中
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat: 完成netlink addr消息的支持,增加测试程序
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat(netlink): 消除一些warning
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* fix: 新建netns时插入loopback网卡到设备列表
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat: 将veth和bridge测试程序改用C完成
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat(gdb): 增加gdb debug可选项
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* fix: 修复SockAddrIn结构体中的sin_addr字节序问题,确保正确处理IPv4地址
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat: 手糊实现路由功能,后续需要更改事件驱动
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat(netlink): 补充getlink方法以及相关结构体
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* Refactor network driver interfaces and introduce NAPI support
- Removed the default_iface parameter.
- Introduced a new NAPI module to manage network polling and scheduling.
- Updated the Iface trait to include a napi_struct method for NAPI support.
- Modified Veth network interfaces to integrate with the new NAPI structure.
- Refactored the Router implementation to remove unnecessary polling threads and wait queues.
- Updated NetNamespace to manage a list of bridge devices.
- Cleaned up various unused methods and comments across network-related files.
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat: 将virtio网卡的处理逻辑移动进ksoftirqd中
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat(netlink): 暂时为多播消息添加allow unused,消除warning
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat(nat): 实现SNAT和DNAT
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat(epoll): 更改epoll唤醒判断的逻辑,支持socket加入epoll
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat: 修改test_bind,防止爆内存
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat: 添加一个路由todo信息
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* fix: rebase主线之后修改冲突
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat: fmt
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat: 清除无用日志
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat: 补充一个panic信息
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat: 将kernel文件夹重命名为kern
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat: 删除netlink测试程序中的linux/netlink.h头文件
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
---------
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
2025-10-30 01:55:04 +08:00
JingXuan_Wei
9634e5e530
feat(riscv platform vf2): vf2 platform adapted to riscv architecture ( #1285 )
...
- Add necessary platform driver support
- Modify some startup processes and assert
- Fixed some issues
Signed-off-by: JensenWei007 <jensenwei007@gmail.com>
2025-10-27 00:11:00 +08:00
Samuel Dai
6f371967c3
refactor(net): the big network rebuild ( #977 )
...
* ready for merge in master (#964 )
uevent should be format
Enum of smoltcp socket should be optimized.
need to add interface for routing subsys
actix is still not abled to run.
clean some casual added code to other places
* updates uevent and make fmt
* 新增CommonAttrGroup,基本支持sysfs下各种类型设备的uevent属性文件的读测试
* 修改net设备的uevent内容,使之与Linux语义一致
* 删除无用注释
* feat: 支持 sysfs下 block, char, Net, rtc, tty 等类型设备的 uevent 文件读操作 (#973 )
* 新增CommonAttrGroup,基本支持sysfs下各种类型设备的uevent属性文件的读测试
* 修改net设备的uevent内容,使之与Linux语义一致
* 删除无用注释
* can ctrl-c interupt from blocking accept
* make fmt
* clean debug messages
* 清理积弊,不必要的动态分发和智能指针
* remove uevent and netlink
* fmt
* remove uevent test
* 重新组织代码分布
* remove unused imports
* fix it back to old syscall printing style
* regulate naming to posix
* todo: socket close 及 port 接触占用
* fix: format check
* feat: remove syscall prettier printing (#988 )
* 重新组织代码分布
* remove unused imports
* fix it back to old syscall printing style
* regulate naming to posix
* todo: socket close 及 port 接触占用
* fix: format check
* remove unnecessary warnings and impls
* loopback assign single ip, remove unnecessary comments
* fmt
* 去除virtio_blk, virtio_net expect错误处理,直接返回错误
* fix: 修复网卡顺序的bug (#996 )
* fix: 修复网卡顺序的bug
* make fmt
* feat: 添加默认网卡字段
* make fmt
* 删掉奇怪加入的文件
* fix: ipv6, AddressFamily有转换问题。
* make fmt
* feat(net): 实现unix抽象地址空间 (#1017 )
* feat(doc):添加网络子系统模块 (#1020 )
* feat(doc): 添加网络子系统文档
* make fmt
* fix(net): TCP Resources and add syscall print, change to use latest smoltcp (#1032 )
* change to smoltcp
* add syscall, fix wront accept-listen logic
* add version and resource close
* debug and add socket option level print
* fix: fix udp and run dog in udp
* turn off syscall printing, remove unused imports and make fmt
* turn off syscall printings
* 纸糊忙等tcp connecting,尚不明确连接可用的机制。
* turn off syscall
* fix: 修正IfaceCommon的bounds字段的锁使用问题&调度问题
- 中断上下文内用到的锁,在外面要irqsave.
- 把主线调度的pr应用到当前分支: https://github.com/DragonOS-Community/DragonOS/pull/1063
Signed-off-by: longjin <longjin@DragonOS.org>
* feat(socket): 实现shutdown系统调用的基础结构并启用相关方法
* feat(socket): 添加shutdown方法并实现ShutdownTemp的TryFrom转换
* fmt
* fix(net): misc of resources release (#1096 )
* fix: TCP socket miss activation after close
* fix: TCP socket miss activation after close (#1085 )
* fix: loopback, udp resource aquire
- remove tcp useless status update
- enable smoltcp medium-ip feature
- change loopback device use ip for addressing, avoid arp procedure
- fix udp couldn't close bug
- fix udp resource aquire didn't lock port
- remove useless Timer in network initialization
* fmt: format
* fix: loopback and udp resource problem (#1086 )
* fix: loopback, udp resource aquire
- remove tcp useless status update
- enable smoltcp medium-ip feature
- change loopback device use ip for addressing, avoid arp procedure
- fix udp couldn't close bug
- fix udp resource aquire didn't lock port
- remove useless Timer in network initialization
* fix(net): Unix 资源释放 (#1087 )
* unix socket 相关资源释放 #991
* 完善streamsocket资源释放
* 解决inode和id不匹配
* fix TCP socketset release (#1095 )
* fix: TCP socket miss activation after close
* fix: loopback, udp resource aquire
- remove tcp useless status update
- enable smoltcp medium-ip feature
- change loopback device use ip for addressing, avoid arp procedure
- fix udp couldn't close bug
- fix udp resource aquire didn't lock port
- remove useless Timer in network initialization
---------
Co-authored-by: YuLong Huang <139891737+LINGLUO00@users.noreply.github.com>
* fix(process): 修复copy_process的一些bug & 支持默认init进程传参 (#1083 )
- 修复`copy_process`函数对标志位处理不正确的bug
- init进程搜索列表中,支持为默认init程序传入参数
Signed-off-by: longjin <longjin@DragonOS.org>
* feat: 完善sys_reboot (#1084 )
* fix(process): 修复copy_process的一些bug & 支持默认init进程传参
- 修复`copy_process`函数对标志位处理不正确的bug
- init进程搜索列表中,支持为默认init程序传入参数
Signed-off-by: longjin <longjin@DragonOS.org>
* feat: 完善sys_reboot
- 校验magic number
- 支持多个cmd (具体内容未实现)
Signed-off-by: longjin <longjin@DragonOS.org>
---------
Signed-off-by: longjin <longjin@DragonOS.org>
* fix: 修复do_wait函数在wait所有子进程时,忘了释放锁就sleep的bug (#1089 )
Signed-off-by: longjin <longjin@DragonOS.org>
* feat(virtualization): 内核虚拟化支持 (#1073 )
* 几个结构体
* 通过vmx_init以及create_vm,create_vcpu部分TODO
* kvm_run完成一半
* 能够成功vmlaunch,但是在vmexit时候还有些问题未排查出来
* 解决了vmlaunch导致的cpu_reset的问题
* 整理代码
* 暂时性push到hyc仓库
* 修改内存虚拟化部分参数传入,解决死锁问题
* 初步完成ept映射.但不停EPT_VIOLATION
* 初步完成了EPT映射,但是读写内存还是有点问题
* fixme
* 更新了一些truncate到from_bits_unchecked的实现
* 完成内存虚拟化EPT_VIOLATION的映射
* fmt
* Remove /fixme from .gitignore
* Remove /fixme file
* Update kernel/src/init/init.rs
Co-authored-by: Samuel Dai <samuka007@dragonos.org>
* Update kernel/src/init/init.rs
Co-authored-by: Samuel Dai <samuka007@dragonos.org>
* 修改了注释格式,删除了附带的一些文件操作
* feat(syscall): 实现syscall restart (#1075 )
能够在系统调用返回ERESTARTSYS时,信号处理结束后,自动重启系统调用.
TODO: 实现wait等需要restart_block的系统调用的重启
Signed-off-by: longjin <longjin@DragonOS.org>
* chore: update docker image version in script && update doc (#1076 )
* chore: update docker image version in script
* chore: replace lots of spaces with newline in doc
* fix: 修复wait4系统调用部分语义与Linux不一致的问题 (#1080 )
* fix: 修复wait4系统调用部分语义与Linux不一致的问题
解决wait不住/wait之后卡死的bug
---------
Signed-off-by: longjin <longjin@DragonOS.org>
* feat(fs/syscall): 实现fchdir系统调用 (#1081 )
Signed-off-by: longjin <longjin@DragonOS.org>
* fix(mm): 修复fat文件系统的PageCache同步问题 (#1005 )
---------
Co-authored-by: longjin <longjin@DragonOS.org>
* fix: 修正nographic启动时,控制台日志未能输出到文件的问题 (#1082 )
Signed-off-by: longjin <longjin@DragonOS.org>
* fix(process): 修复copy_process的一些bug & 支持默认init进程传参 (#1083 )
- 修复`copy_process`函数对标志位处理不正确的bug
- init进程搜索列表中,支持为默认init程序传入参数
Signed-off-by: longjin <longjin@DragonOS.org>
* feat: 完善sys_reboot (#1084 )
* fix(process): 修复copy_process的一些bug & 支持默认init进程传参
- 修复`copy_process`函数对标志位处理不正确的bug
- init进程搜索列表中,支持为默认init程序传入参数
Signed-off-by: longjin <longjin@DragonOS.org>
* feat: 完善sys_reboot
- 校验magic number
- 支持多个cmd (具体内容未实现)
Signed-off-by: longjin <longjin@DragonOS.org>
---------
Signed-off-by: longjin <longjin@DragonOS.org>
* fix: 修复do_wait函数在wait所有子进程时,忘了释放锁就sleep的bug (#1089 )
Signed-off-by: longjin <longjin@DragonOS.org>
* pull主线并且fmt
---------
Signed-off-by: longjin <longjin@DragonOS.org>
Co-authored-by: GnoCiYeH <heyicong@dragonos.org>
Co-authored-by: Samuel Dai <samuka007@dragonos.org>
Co-authored-by: LoGin <longjin@DragonOS.org>
Co-authored-by: LIU Yuwei <22045841+Marsman1996@users.noreply.github.com>
Co-authored-by: MemoryShore <1353318529@qq.com>
* fix: 在插入新的timer时,边界条件判断不正确的问题 (#1091 )
修复split_pos 初始值错误导致原本应该被插入到链表末尾的定时器,插入到了链表头
Signed-off-by: longjin <longjin@DragonOS.org>
* fmt
* feat(net): Add Inet documenation
* Revert "Merge Master"
* cleanup codes
* refactor: 将设备名称 "lo" 提取为常量 DEVICE_NAME
Signed-off-by: longjin <longjin@DragonOS.org>
* make fmt (#1109 )
* fmt (#1110 )
* refactor: 删除多余的代码
Signed-off-by: longjin <longjin@DragonOS.org>
* refactor: 移除网络重构分支中,use xxx::*的内容 (#1117 )
Signed-off-by: longjin <longjin@DragonOS.org>
* feat(net): 引入kthread,将Inet-网卡处理流程移入内核线程中
* change socket interface
* add check target vscode settings
* fix(net,unix): fix miss create of file
* fix(net): format codes
* fix: 修复缺失的glibc和busybox的toml文件
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* fmt
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* refactor: 统一接口到 Socket trait 一层
* fix(user): http_server 错误判断创建socket的返回值
* feat(net): add epoll logical support for inet sockets
* fix(net): can write file, have problem in notification
* refactor: 消除warning,优化代码结构
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* fix(epoll): 修复connect的忙等待逻辑,以及支持socket加入epoll
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* fmt
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat: 简单实现unix stream & seqpacket
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* fix(unix):让 unix socket 的close方法返回Ok
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* chore: 更新依赖镜像并调整调试输出
- 将inherit-methods-macro依赖从GitHub迁移至DragonOS镜像源
- 移除rust-analyzer的allTargets检查配置
- 简化LoopbackInterface和IfaceCommon的Debug实现
- 移除socket resize方法中的冗余警告日志
Signed-off-by: longjin <longjin@DragonOS.org>
---------
Signed-off-by: longjin <longjin@DragonOS.org>
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
Co-authored-by: val213 <1042594899@qq.com>
Co-authored-by: Val213 <112376067+val213@users.noreply.github.com>
Co-authored-by: 黄铭涛 <1037827920@qq.com>
Co-authored-by: Cai Junyuan <121806694+smallcjy@users.noreply.github.com>
Co-authored-by: smallcjy <2628035541@qq.com>
Co-authored-by: longjin <longjin@DragonOS.org>
Co-authored-by: xiaolin2004 <1553367438@qq.com>
Co-authored-by: YuLong Huang <139891737+LINGLUO00@users.noreply.github.com>
Co-authored-by: Z Fan <140599389+BrahmaMantra@users.noreply.github.com>
Co-authored-by: GnoCiYeH <heyicong@dragonos.org>
Co-authored-by: LIU Yuwei <22045841+Marsman1996@users.noreply.github.com>
Co-authored-by: MemoryShore <1353318529@qq.com>
Co-authored-by: 火花 <sparkhhhhhhhhhh@outlook.com>
2025-09-12 00:35:13 +08:00
LoGin
f7e908f47e
release: 发布 DragonOS 0.2.0 版本 ( #1263 )
...
Signed-off-by: longjin <longjin@DragonOS.org>
2025-08-22 23:01:37 +08:00
LoGin
40e92db370
chore: Upgrade kernel toolchain to 250810 ( #1257 )
...
chore: 升级Rust工具链至nightly-2025-08-10
- 更新工作流容器版本至v1.14
- 升级Rust工具链至nightly-2025-08-10
- 更新多个依赖库版本(bitflags、gimli、itertools等)
- 修复代码格式和文档注释
- 优化内存对齐检查使用is_multiple_of()
- 改进错误处理和日志输出
- 移除过时的特性标记和代码
Signed-off-by: longjin <longjin@DragonOS.org>
2025-08-18 13:25:19 +08:00
火花
1e574d89fa
feat(fs): 补充mount系统调用,增加对硬盘挂载 & ext4文件系统的支持 ( #1182 )
...
主要变更:
* 实现完整的mount系统调用,支持从块设备挂载文件系统
* 新增ext4文件系统支持,基于another_ext4库实现
* 引入MountableFileSystem trait和文件系统工厂模式,提升VFS架构
* 完善块设备管理,自动将磁盘和分区注册到devfs(/dev)
* 支持virtio块设备的分区检测和挂载
* 新增umount2系统调用支持文件系统卸载
* 重构symlink相关系统调用,提升代码组织
* 提供硬盘镜像制作脚本和测试程序
技术细节:
- 支持ext4和vfat文件系统的挂载
- 实现MBR分区表解析和GenDisk管理
- 集成页面缓存支持提升文件系统性能
- 完善错误处理和设备号管理
- 新增详细的VFS挂载机制文档
测试验证:
- 新增test-mount-ext4和test-mount-fat测试程序
- 提供make_fs_image.sh脚本创建测试镜像
- 验证挂载、读写、卸载完整流程
Co-authored-by: Samuka007 <samuka007@dragon-os.org>
Co-authored-by: oeasy1412 <oeasy1412@gmail.com>
Co-authored-by: fslongjin <longjin@DragonOS.org>
2025-06-29 17:05:06 +08:00
linfeng
723ac05719
feat: Update rbpf to mainline ( #1209 )
...
* feat: Update rbpf to mainline
Enable JIT compilation on x86 platform.
Signed-off-by: Godones <chenlinfeng25@outlook.com>
* fix: remove rbpf test
Signed-off-by: Godones <chenlinfeng25@outlook.com>
* fix: remove rbpf info
Signed-off-by: Godones <chenlinfeng25@outlook.com>
---------
Signed-off-by: Godones <chenlinfeng25@outlook.com>
2025-06-20 10:49:59 +08:00
linfeng
799e573259
feat: debug kernel stack ( #1176 )
...
* feat: debug kernel stack
Signed-off-by: Godones <chenlinfeng25@outlook.com>
* fix: Create guard pages for the kstack through remap
Signed-off-by: Godones <chenlinfeng25@outlook.com>
* feat(arch/x86_64): 启用内核态写保护功能
添加enable_kernel_wp函数来设置CR0的WP位,防止内核错误写入只读页面
Signed-off-by: longjin <longjin@DragonOS.org>
* fix(x86_64/mm): 在内核地址错误处理中添加RIP寄存器信息
Signed-off-by: longjin <longjin@DragonOS.org>
* fix: Fixed the error introduced by enabling WP flag on x86
Restore accidentally deleted functions.
Signed-off-by: Godones <chenlinfeng25@outlook.com>
* refactor: 移除kstack_protect默认特性并优化内存管理
- 从default特性中移除kstack_protect
- 为X86_64MMBootstrapInfo添加kernel_rodata_start字段
- 调整内核页标志对rodata区域的判断逻辑
Signed-off-by: longjin <longjin@DragonOS.org>
* fix(mm): 解决加载二进制文件到用户空间的时候,忘记关闭wp的问题
Signed-off-by: longjin <longjin@DragonOS.org>
* fix
Signed-off-by: longjin <longjin@DragonOS.org>
---------
Signed-off-by: Godones <chenlinfeng25@outlook.com>
Signed-off-by: longjin <longjin@DragonOS.org>
Co-authored-by: longjin <longjin@DragonOS.org>
2025-06-14 20:42:58 +08:00
LoGin
e696ba4440
fix: 解决创建buddy的函数栈帧过大的问题 ( #1189 )
...
* fix: 解决创建buddy的函数栈帧过大的问题
Signed-off-by: longjin <longjin@DragonOS.org>
* chore(kernel): 移除smoltcp的log依赖项
Signed-off-by: longjin <longjin@DragonOS.org>
---------
Signed-off-by: longjin <longjin@DragonOS.org>
2025-06-08 10:56:26 +08:00
LoGin
b322121dd9
feat(syscall): 添加syscall table的实现 ( #1164 )
...
* feat(syscall): 添加syscall table的实现
- 实现syscall table
- 为syscall table适配write/writev、read和readv系统调用
---------
Signed-off-by: longjin <longjin@DragonOS.org>
2025-05-13 18:59:18 +08:00
LoGin
0b89d7130e
refactor(vfs): 重构statx系统调用的实现 ( #1149 )
...
- 将kstat的获取,与posix statx的获取进行分离.
- 修复statx没有处理dirfd的bug
- 在Metadata结构体中新增btime字段,表示文件的创建时间
- 更新多个文件系统的metadata实现,添加对btime的支持
- 引入derive_builder crate以简化Metadata构建过程
- 重构vfs模块,将core重命名为vcore以避免命名冲突
- 实现vfs_statx和vfs_getattr函数,支持更详细的文件属性查询
- 新增LookUpFlags定义,用于路径查找时的标志位
Signed-off-by: longjin <longjin@dragonos.org>
2025-05-09 14:46:10 +08:00
LoGin
5e87c41d96
chore: 更新loongArch64依赖版本至0.2.5 ( #1151 )
...
将loongArch64依赖从git版本切换为crates.io注册表版本0.2.5,
Signed-off-by: longjin <longjin@DragonOS.org>
2025-05-07 19:00:02 +08:00
linfeng
50bbcae01a
feat:Add tracepoint prototype ( #1088 )
...
* feat:Add tracepoint prototype
Signed-off-by: Godones <chenlinfeng25@outlook.com>
2025-04-22 01:58:44 +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
linfeng
167d272792
refactor epoll related implementation ( #1128 )
...
* Refactor epoll related implementation
Add PollableInode trait
Implement PollableInode for pollable inodes
fix https://github.com/DragonOS-Community/DragonOS/issues/1094
Signed-off-by: Godones <chenlinfeng25@outlook.com>
2025-04-20 16:41:49 +08:00
linfeng
91cc4adba9
fix the panic error for riscv64 ( #1123 )
...
* fix the panic error for riscv64
2025-04-02 13:49:57 +08:00
LoGin
b6db20c072
feature: virtio console support ( #1113 )
...
feat(virtio): add virtio console driver support
- Implement virtio console driver with TTY interface
- Add HVC device support for console output
- Update devfs to handle HVC devices
- Fix virtio driver registration and initialization
- Improve virtio net driver interrupt handling
- Clean up block device naming implementation
- Add clippy lint checks to multiple crates
- Fix slab allocator alignment issues
- Update QEMU run script for virtio consoleagonOS.org>
---------
Signed-off-by: longjin <longjin@DragonOS.org>
2025-03-27 20:48:40 +08:00
linfeng
3d663af8a2
fix: remove useless c code ( #1116 )
...
* fix: remove useless c code
remove printk.c file
remove old test_ebpf file
implement `lookup_kallsyms` and `addr_from_symbol` using rust
* fix the weak linkage
* feat(kernel): 添加cfg-if依赖并优化panic模块的条件编译
Signed-off-by: longjin <longjin@DragonOS.org>
---------
Signed-off-by: longjin <longjin@DragonOS.org>
Co-authored-by: longjin <longjin@DragonOS.org>
2025-03-27 14:16:10 +08:00
Z Fan
4729ec69c4
feat(kvm): 删除了旧版本kvm的代码 ( #1093 )
...
* feat(kvm): 删除了旧版本kvm的代码
* chore(kernel): 将release profile中的debug选项设置为false
Signed-off-by: longjin <longjin@DragonOS.org>
---------
Signed-off-by: longjin <longjin@DragonOS.org>
Co-authored-by: longjin <longjin@DragonOS.org>
2025-03-25 13:41:30 +08:00
MemoryShore
e92424df8d
fix(mm): 修复fat文件系统的PageCache同步问题 ( #1005 )
...
---------
Co-authored-by: longjin <longjin@DragonOS.org>
2025-01-01 23:38:00 +08:00
LoGin
2b72148cae
feat(syscall): 实现syscall restart ( #1075 )
...
能够在系统调用返回ERESTARTSYS时,信号处理结束后,自动重启系统调用.
TODO: 实现wait等需要restart_block的系统调用的重启
Signed-off-by: longjin <longjin@DragonOS.org>
2024-12-13 00:56:20 +08:00
linfeng
081428c0d8
feat: update to new backtrace lib ( #1049 )
...
* feat: update to new backtrace lib
* feat: enable unwind for riscv64
---------
Co-authored-by: longjin <longjin@DragonOS.org>
2024-11-19 21:55:22 +08:00
linfeng
750b3b5d91
feat(debug)[WIP]: add static-keys support ( #1025 )
...
* feat: add static-keys support
2024-11-16 16:21:20 +08:00
LoGin
a9e28e9ce9
fix: 临时修复键盘驱动与鼠标驱动冲突导致键盘无响应 ( #1014 )
...
暂时通过条件编译的方式解决. 目前认为是鼠标驱动问题,没有正确判断是不是自己的数据...
但是因为我们场景下,鼠标驱动几乎用不到,因此先条件编译屏蔽.
Signed-off-by: longjin <longjin@DragonOS.org>
2024-10-26 12:55:19 +08:00
linfeng
fae6e9ade4
feat(ebpf):[WIP] add eBPF support ( #948 )
...
* feat(kprobe): Add basic kprobe support for x86_64
* feat: add ebpf support (#912 )
- 实现bpf()一部分命令,包括几种基本map,相关的helper函数
- 实现部分perf相关的数据结构
- 暂时为文件实现简单mmap
- 实现一个使用kprobe统计syscall 调用次数的ebpf程序
对eBPF支持程度(基本):
- 简单的eBPF程序(没有指定特殊的Map)
- 使用内核已经实现的Map的eBPF程序
- 可以和kprobe配合使用
- 内核Map相关的接口定义已经实现,添加新的Map较为简单
不支持的功能:
- 区分不同的eBPF程序类型(Network/Cgroup)并限定可调用的helper函数集
- 与内核其它跟踪机制配合(tracepoint)
- 其它helper和Map
todo
- [ ] 修改mmap,需要讨论,因为这个和块缓存层相关
- [x] 添加文档
- [x] 修复可能的错误
- [x] 增加rbpf版本信息
* feat: add /sys/devices/system/cpu/possible file
* feat: add /sys/devices/system/cpu/online
2024-10-25 15:59:57 +08:00
LoGin
f9fe30be89
feat(boot): 内核启动命令行参数解析 ( #969 )
...
支持解析启动命令行参数,行为与Linux一致。具体见文档。
bbs链接:https://bbs.dragonos.org.cn/t/topic/362
issue: https://github.com/DragonOS-Community/DragonOS/issues/865
支持了三种参数:
- Arg (不带Value的参数)
- KV (正常的KV参数)
- EarlyKV (在内存管理初始化之前解析)
# TODO
- 支持在`/proc/cmdline`下面查看内核启动时的命令行参数。
- 支持回调函数,允许更加灵活的设置参数的值(目前用不到,就没写了)
Signed-off-by: longjin <longjin@DragonOS.org>
2024-10-13 23:39:55 +08:00
LoGin
59a6bcf6ae
feat: Add HVM boot support for x86_64 ( #953 )
...
Signed-off-by: longjin <longjin@DragonOS.org>
2024-10-09 21:36:18 +08:00
LoGin
013ffb708f
feat(ida): IDA内部改为使用XArray实现 ( #934 )
...
目前可以记录哪些ID已经分配,支持了ID释放的功能.
Signed-off-by: longjin <longjin@DragonOS.org>
2024-09-25 11:20:52 +08:00
LoGin
db7c782a9a
feat: 允许通过multiboot引导(直到acpi初始化报错) ( #914 )
2024-09-06 20:04:36 +08:00
LoGin
2b7818e80e
feat: 添加对内核引导协议的抽象 ( #913 )
...
* 添加multiboot header
* head.S传参增加bootloader类型
* feat: 添加引导加载协议的抽象,并为multiboot2实现这个抽象.
* 把framebuffer的映射地址改为从early ioremap和mmio pool分配
* riscv64能运行
2024-09-05 21:12:20 +08:00
MemoryShore
cf7f801e1d
feat(mm): 简单实现fat文件系统的文件映射 ( #840 )
...
- 添加文件映射相关接口,目前已简单实现fat文件系统的私有映射和共享映射
- 添加msync系统调用(由于当前未实现脏页自动回写,需要手动调用msync进行同步)
- 简单实现PageCache(暂时使用HashMap进行文件页号与页的映射)
- 添加新的PageFlags标志结构,原PageFlags改名为EntryFlags
- 参考linux使用protection_map映射表进行页面标志的获取
- 添加页面回收机制
- 添加页面回收内核线程
- 缺页中断使用的锁修改为irq_save; 添加脏页回写机制
- 修复do_cow_page死锁问题
- 访问非法地址时发送信号终止进程
- 修复重复插入反向vma表的错误
- 添加test_filemap文件映射测试程序
2024-09-05 00:35:27 +08:00
LoGin
dc9b4fea1b
fix: pipe 读取/写入阻塞时,无法kill进程的问题 ( #889 )
2024-08-27 13:01:11 +08:00
LoGin
bd70d2d1f4
chore: 将工具链更新到2024-07-23 ( #864 )
...
* chore: 将工具链更新到2024-07-23
2024-07-25 00:55:02 +08:00
LoGin
ce48b93437
doc: add v0.1.10 changelog ( #813 )
...
* 完成v0.1.10 changelog
2024-05-13 16:56:26 +08:00
LoGin
0102d69fdd
feat:(riscv/intr) 实现riscv plic驱动,能处理外部中断 ( #799 )
...
* feat:(riscv/intr) 实现riscv plic驱动,能处理外部中断
- 实现riscv plic驱动,能处理外部中断
- 能收到virtio-blk的中断
- 实现fasteoi interrupt handler
2024-05-01 21:11:32 +08:00
LoGin
471d65cf15
feat(riscv): riscv下能够运行hello world用户程序 ( #770 )
...
* feat(riscv): riscv下能够运行hello world用户程序
2024-04-26 11:59:47 +08:00
LoGin
731bc2b32d
feat(virtio): riscv: 添加virtio-blk driver,并在riscv下能够正确挂载FAT32 ( #761 )
2024-04-23 17:19:54 +08:00
LoGin
b502fbf0b9
chore: Update virtio-drivers to commit 61ece509c4 and modify max_queue_size implementation ( #748 )
2024-04-21 13:30:29 +08:00
yuyi2439
881ff6f95e
将smoltcp升级到0.11.0版本 ( #740 )
2024-04-21 11:39:00 +08:00
laokengwt
ceeb2e943c
feat(mm): 添加slab内存分配器 ( #683 )
...
feat(mm): 添加slab内存分配器
---------
Co-authored-by: longjin <longjin@DragonOS.org>
2024-04-15 12:51:14 +08:00
LoGin
9621ab16ef
让riscv64能正常切换进程,并运行完所有的initcall ( #721 )
2024-04-14 20:39:20 +08:00