Commit Graph

987 Commits

Author SHA1 Message Date
JingXuan_Wei be4ee4f0ac
fix:Fix related issues with kexec (pr # 1303) code (#1339)
- Fix some legacy issues of PR 1303
- Supplement the error handling of PR 1303

Signed-off-by: JensenWei007 <jensenwei007@gmail.com>
2025-11-10 13:31:10 +08:00
LoGin dee2e02034
feat(mm): 实现 VM_DONTCOPY 标志支持 (#1349)
- 在地址空间克隆时跳过标记为 VM_DONTCOPY 的 VMA
- 移除已拷贝的 VM_DONTCOPY 区域的页面映射
- 更新测试用例以验证 MADV_DONTFORK 功能

Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-06 23:37:31 +08:00
kaleidoscope416 71f867f879
fix(vfs):修复 sys_mknodat 路径解析与 mode 处理,并修复 fatfs中mknod 相关死锁 (#1346)
- 处理空路径与 dirfd:当传入的路径名解析后为 "" 且给定的 dirfd 不是 AT_FDCWD 时,返回 ENOENT,避免把空字符串当成有效名在指定目录上进行创建
- mode==0 视为常规文件:将 mode 位为 0 的情况当作 S_IFREG 处理,保持与用户态期望一致
- 修正 AT_FDCWD 父目录查找逻辑:在解析父路径并查找父目录时正确处理 AT_FDCWD,避免错误地基于 AT_FDCWD 进行不当的父目录解析
- 修复 mknod 相关死锁:修复fatfs中mknod获取锁后调用create再次获取锁所引发的死锁

---------

Signed-off-by: longjin <2448956191@qq.com>
Co-authored-by: longjin <longjin@DragonOS.org>
2025-11-06 23:33:23 +08:00
Yuming Jiang d6b2e8691e
feat(vfs): 实现 SYS_PWRITEV 系统调用 (#1322)
* feat(vfs):实现了 SYS_PWRITEV 系统调用
2025-11-06 23:11:49 +08:00
kaleidoscope416 cb6df6dd68
fix(vfs):调整 lseek 行为 —— 禁止 procfs SEEK_END,目录 SEEK_END 返回 MAX_LFS_FILESIZE (#1344)
* 修复对procfs,dir进行lseek的行为错误
2025-11-06 23:02:09 +08:00
LoGin d72261e630
fix(mm): 修复madvise和msync系统调用中的边界处理问题 (#1345)
- 修复madvise长度参数未对齐时的处理逻辑,添加长度向上舍入和溢出检查
- 优化msync系统调用中的VMA查找逻辑,修复锁竞争和边界条件问题
- 修复UserMappings::find_nearest中的VMA查找逻辑错误
- 启用madvise测试

Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-06 16:54:45 +08:00
LoGin c817baeee0
fix: validate clone flags and update test blocklist (#1343)
- Replace from_bits_truncate with from_bits to properly validate clone flags
- Remove CloneTest.Clone3UnknownFlag from test blocklist as it's now handled

Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-05 13:01:50 +08:00
LoGin 9029f0cd0b
fix: 修复进程创建时 CLONE_PARENT_SETTID 标志处理时机 (#1342)
- 将 CLONE_PARENT_SETTID 处理逻辑移至进程创建完成后的正确位置

Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-05 00:22:29 +08:00
LoGin 223966ea18
fix(process): 修复进程等待和退出机制 (#1340)
- 修正父进程等待子进程的等待队列逻辑
- 优化进程退出时的状态设置
- 添加中断保护以避免竞态条件
- 修正错误码处理

Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-04 23:18:21 +08:00
LoGin 9c215fb5ac
feat(process): 添加对fs/gs的用户空间地址验证 (#1336)
- 在ARCH_SET_FS和ARCH_SET_GS系统调用中添加FS/GS地址的用户空间验证
- 在进程克隆时添加TLS地址的用户空间验证
- 新增KernelCloneArgs::verify()方法用于验证克隆参数

Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-04 13:57:20 +08:00
LoGin 75153e2bb1
fix(vfs): 修复文件写入和管道读写逻辑 (#1335)
- 修复文件写入时RLIMIT_FSIZE限制对非File对象也生效了的问题
- 修复管道读写时缓冲区边界处理逻辑,使用两段复制避免跨尾错误
- 修复非阻塞管道写入时返回错误码不正确的问题

Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-03 22:09:06 +08:00
LoGin d94badf144
fix(mm): 修复匿名共享页跨进程共享问题 (#1334)
- 修复 MAP_SHARED|ANON 语义,确保匿名共享页在跨进程间真正共享,
	避免了由于匿名共享页面在尚未fault的时候,fork,
	接着父子进程分别为这一区域分配了不同的物理页面.
- 为 AnonSharedMapping 添加页面缓存,避免重复分配同一页面
- 实现原子性的页面获取或创建机制,防止竞态条件

Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-03 22:08:36 +08:00
LoGin 741d1ad758
feat: 实现waitid系统调用及作业控制信号处理 (#1333)
* feat: 实现waitid系统调用及作业控制信号处理

- 新增waitid系统调用,支持WEXITED、WSTOPPED、WCONTINUED等选项
- 完善作业控制信号处理逻辑,支持SIGSTOP/SIGCONT的异步处理
- 优化信号唤醒机制,确保及时处理pending信号
- 添加waitid功能测试用例,验证系统调用正确性

Signed-off-by: longjin <longjin@DragonOS.org>

* fix: 修复进程管理和信号处理中的竞态条件与错误处理

- 在信号唤醒逻辑中添加停止状态检查,避免错误唤醒已停止进程
- 修复进程等待循环中的错误处理,防止在ESRCH等错误时无限循环
- 优化CPU踢出逻辑,避免当前CPU自踢造成的竞态条件
- 清理信号类型定义中的冗余注释

Signed-off-by: longjin <longjin@DragonOS.org>

* fix(ipc): 修正信号信息结构体字段顺序以符合Linux标准

- 调整SigInfo和PosixSigInfo结构体字段顺序
- 确保si_errno在si_code之前,符合Linux标准布局
- 更新相关转换代码中的字段赋值顺序

Signed-off-by: longjin <longjin@DragonOS.org>

---------

Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-02 21:49:32 +08:00
kaleidoscope416 e769493840
fix(syscall):修复syslog的bug (#1327)
- 在 procfs 的 syslog syscall 处理路径中增加对 SYSLOG_ACTION_READ_ALL (action = 3) 的分发。
- 直接调用现有的 Kmsg::read_all 接口,未修改 Kmsg 的实现逻辑。
- 修复了 gvisor 测试中 Syslog.ReadAll 因未分发而返回 EINVAL 的问题。
2025-10-30 13:54:11 +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
linfeng c651b2747c
add dropbear support (#1304)
https://github.com/DragonOS-Community/DragonOS/pull/1304

* fix rename error in fat32

add a fake link implementation for fat32(it will be removed in the
future).

Signed-off-by: Godones <chenlinfeng25@outlook.com>

* feat: add new syscall and fix the fnctl error

add sendfile syscall.
add rt_sigsuspend syscall.
add sendfile test.
add setown/getown command for fcntl.

Signed-off-by: Godones <chenlinfeng25@outlook.com>

---------

Signed-off-by: Godones <chenlinfeng25@outlook.com>
2025-10-27 22:29:50 +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
LoGin c353791804
fix(futex): 修复futex定时器激活逻辑导致唤醒丢失的问题&复FUTEX_WAKE_OP操作中的Linux兼容性问题 (#1326)
* fix(futex): 修复定时器激活逻辑以避免唤醒丢失

- 在阻塞进程时,确保定时器在中断关闭后被激活,以防止短超时导致的唤醒丢失
- 移除不必要的定时器激活调用,优化代码结构

Signed-off-by: longjin <longjin@DragonOS.org>

* fix(futex): 修复FUTEX_WAKE_OP操作中的Linux兼容性问题

- 修复FUTEX_OP_ANDN操作的位运算逻辑错误
- 支持私有futex中uaddr为NULL时的Linux兼容行为
- futex_test启用PrivateFutex的测例

Signed-off-by: longjin <longjin@DragonOS.org>

---------

Signed-off-by: longjin <longjin@DragonOS.org>
2025-10-27 00:03:54 +08:00
LoGin 1e637b2e9e
fix: 修复多线程的一些bug (#1325)
* feat: 增强信号处理和线程同步功能

- 修复信号处理默认行为,显式设置SIGCHLD/SIGURG/SIGWINCH为忽略
- 在信号处理和futex系统调用中添加内存屏障确保执行顺序
- 添加pthread创建和连接测试用例,验证线程功能正确性
- 优化进程退出时的子进程收养逻辑,移除调试日志
- 更新测试程序Makefile,添加pthread链接支持

Signed-off-by: longjin <longjin@DragonOS.org>

* feat(mm): 实现MADV_DONTNEED内存建议操作

- 添加对MADV_DONTNEED和MADV_DONTNEED_LOCKED标志的处理
- 实现页面解除映射和TLB刷新逻辑
- 支持glibc pthread_create时的线程栈管理

Signed-off-by: longjin <longjin@DragonOS.org>

* fix(robust_lock): 修复robust list获取逻辑

- 修正get_robust_list方法的参数命名和文档
- 修复用户空间指针处理逻辑,正确写入robust list head地址和大小

Signed-off-by: longjin <longjin@DragonOS.org>

* refactor(kernel): 优化futex系统调用和线程相关代码

- 简化futex操作参数处理,移除不必要的错误检查
- 调整clone系统调用参数提取函数顺序
- 在clear_user函数中添加内存屏障
- 新增pthread基础功能测试程序

Signed-off-by: longjin <longjin@DragonOS.org>

---------

Signed-off-by: longjin <longjin@DragonOS.org>
2025-10-19 16:50:03 +08:00
LoGin 0fdf7e1123
feat(ipc): 实现 rt_sigtimedwait 系统调用并优化信号处理机制 (#1323)
* feat(ipc): 实现 rt_sigtimedwait 系统调用并优化信号处理机制

- 添加标准 POSIX siginfo_t 结构体及相关类型,用于用户态接口
- 实现 rt_sigtimedwait 系统调用,支持等待特定信号并处理超时
- 优化信号处理逻辑,确保信号正确标记为 pending
- 修复生命周期标注问题,提高代码健壮性
- 添加完整的系统调用测试用例

Signed-off-by: longjin <longjin@DragonOS.org>

* feat(signal): 扩展实时信号支持并优化信号处理逻辑

- 新增实时信号定义(SIGRTMIN+1至SIGRTMIN+31)
- 改进信号唤醒机制,修复阻塞状态下的信号处理
- 增强内存错误日志,添加进程ID和RIP信息
- 重构抢占管理,引入PreemptGuard机制
- 优化rt_sigtimedwait系统调用实现

Signed-off-by: longjin <longjin@DragonOS.org>
2025-10-14 00:01:48 +08:00
LoGin 978252d00a
fix(futex): 修复futex系统调用参数处理逻辑 (#1321)
- 根据不同的futex命令类型正确处理第4个参数
- 对于WAIT系列操作,第4个参数被解释为超时指针
- 对于其他操作,第4个参数被解释为数值val2
- 仅在需要uaddr2的操作中校验uaddr2

Signed-off-by: longjin <longjin@DragonOS.org>
2025-10-10 23:09:12 +08:00
LoGin bc7c38b705
refactor(futex): 迁移futex系统调用到syscall table机制 (#1320)
- 将futex系统调用从通用系统调用模块中分离
- 为futex和robust futex创建独立的系统调用处理器

Signed-off-by: longjin <longjin@DragonOS.org>
2025-10-10 22:49:38 +08:00
LoGin 3b3b55bfc9
fix(futex): 修复futex的一些bug (#1311)
* feat(filesystem): 实现truncate系统调用

- 添加VFS层的统一vfs_truncate封装,包含文件类型和只读挂载检查
- 实现truncate系统调用处理,支持路径解析和符号链接跟随
- 修复FAT文件系统resize方法,确保页缓存和元数据同步更新
- 添加全面的用户空间测试用例,覆盖各种边界条件和错误情况
- 优化文件截断流程,统一通过VFS封装处理类型和只读检查

Signed-off-by: longjin <longjin@DragonOS.org>

* fix(page_cache): 修复新文件截断时的错误处理逻辑

Signed-off-by: longjin <longjin@DragonOS.org>

* style(filesystem): 移除vcore.rs中的调试日志和注释

Signed-off-by: longjin <longjin@DragonOS.org>

* feat(futex): 完善共享匿名映射的futex支持

- 实现共享匿名映射的futex键生成机制
- 添加跨进程共享匿名futex的测试用例
- 增加futex操作的调试日志输出
- 修复私有futex键的构建问题

Signed-off-by: longjin <longjin@DragonOS.org>

* fix(futex): 修复futex超时处理并增加调试日志

- 修复零超时时间立即返回ETIMEDOUT的逻辑
- 简化超时检查条件,移除错误的FLAGS_HAS_TIMEOUT检查

Signed-off-by: longjin <longjin@DragonOS.org>

* feat(runner): 添加输出到控制台的选项

- 添加Config结构体中的output_to_stdout字段
- 根据配置决定测试输出方式(文件或控制台)
- 添加--stdout命令行参数以启用控制台输出

Signed-off-by: longjin <longjin@DragonOS.org>

* fix(futex): 修复futex等待和唤醒机制

- 修正bitset匹配逻辑,使用位与操作而非不等比较
- 移除wake_up函数的inline(always)属性
- 实现FUTEX_WAIT_BITSET的绝对超时处理
- 添加时间合法性检查和时钟选择逻辑

Signed-off-by: longjin <longjin@DragonOS.org>

* fix(process): 修复futex和进程ID管理相关问题

- 修正FLAGS_MATCH_NONE常量值为0x00
- 确保非组长线程的TGID与组长一致
- 调整clear_child_tid操作顺序以符合Linux语义
- 优化pid_nr_ns方法实现避免潜在panic
- 添加futex测试的blocklist和白名单配置

Signed-off-by: longjin <longjin@DragonOS.org>

---------

Signed-off-by: longjin <longjin@DragonOS.org>
2025-10-10 13:39:47 +08:00
黄铭涛 625abda35e
feat(misc/reboot): 进一步完善reboot系统调用 (#1157)
* feat(misc/reboot): 进一步完善reboot系统调用

* 删除多余的注释

* fix: 添加riscv, loongarch的reboot占位函数

* format: 格式化代码

https://github.com/DragonOS-Community/DragonOS/pull/1157

* Update kernel/src/debug/sysfs/mod.rs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* refactor(reboot): modify reboot syscall from match to syscall table

* 添加restart模式的重启测试用例

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-09 22:45:18 +08:00
LoGin 225be1aff8
refactor(time): 将时间相关系统调用重构到syscall table机制下 (#1314)
* refactor(time): 将时间相关系统调用重构到syscall table机制下

- sys_alarm
- sys_clock_gettime
- sys_gettimeofday

Signed-off-by: longjin <longjin@DragonOS.org>

* fix(time): 修复sys_alarm系统调用的逻辑错误

- 修复初始化alarm时使用固定值0的问题,改为使用传入的秒数
- 在取消alarm时正确清空pcb_alarm并返回剩余时间

Signed-off-by: longjin <longjin@DragonOS.org>

---------

Signed-off-by: longjin <longjin@DragonOS.org>
2025-10-09 22:21:48 +08:00
LoGin 7059be4b90
feat(fs): implement RLIMIT_FSIZE limit checking (#1312)
- Add file size limit checking before write operations
- Send SIGXFSZ signal when exceeding file size limit
- Handle partial writes when approaching the limit
- Add check for O_PATH file descriptors in writeable method
- Update test configurations for write limit tests

Signed-off-by: longjin <longjin@DragonOS.org>
2025-10-09 22:06:17 +08:00
linfeng 5d74560493
fix: Fixed some bugs in network and file system (#1302)
1. Return ok instead of error for tty devices.
2. Fixed the packet sending and receiving issues in the network.
3. Fix file descriptor duplication issue.
4. Fix readlink error.
2025-10-09 14:59:44 +08:00
LoGin 84a5869169
feat(filesystem): 实现truncate系统调用 (#1308)
* feat(filesystem): 实现truncate系统调用

- 添加VFS层的统一vfs_truncate封装,包含文件类型和只读挂载检查
- 实现truncate系统调用处理,支持路径解析和符号链接跟随
- 修复FAT文件系统resize方法,确保页缓存和元数据同步更新
- 添加全面的用户空间测试用例,覆盖各种边界条件和错误情况
- 优化文件截断流程,统一通过VFS封装处理类型和只读检查

Signed-off-by: longjin <longjin@DragonOS.org>

* fix(page_cache): 修复新文件截断时的错误处理逻辑

Signed-off-by: longjin <longjin@DragonOS.org>

* style(filesystem): 移除vcore.rs中的调试日志和注释

Signed-off-by: longjin <longjin@DragonOS.org>

---------

Signed-off-by: longjin <longjin@DragonOS.org>
2025-10-08 16:41:16 +08:00
LoGin f1ca2910e6
feat: add sys_clock_nanosleep, tgkill, tkill (#1307)
* feat(syscall): 实现 clock_nanosleep 系统调用及信号重启机制

- 添加 clock_nanosleep 系统调用实现,支持相对和绝对时间睡眠
- 完善信号中断后的系统调用重启机制,特别是 ERESTART_RESTARTBLOCK 的处理
- 为 nanosleep 添加重启块支持,实现 SA_RESTART 标志的语义
- 添加 clock_nanosleep 的测试用例
- 修复 TKILL 系统调用返回 ENOSYS 而非 0

Signed-off-by: longjin <longjin@DragonOS.org>

* feat(ipc): 新增 tkill 和 tgkill 系统调用实现

- 添加 tkill 和 tgkill 系统调用及相关信号处理功能
- 实现 pause 系统调用
- 改进 nanosleep 和 clock_nanosleep 功能
- 添加相关测试用例

Signed-off-by: longjin <longjin@DragonOS.org>

* style(time): 优化睡眠函数代码结构并移除调试日志

- 重构nanosleep函数中was_interrupted变量的赋值逻辑
- 移除clock_nanosleep和nanosleep函数中的调试日志输出

Signed-off-by: longjin <longjin@DragonOS.org>

* refactor: 将 SigCode 枚举从各架构特定文件移至通用 signal_types.rs

- 消除 loongarch64、riscv64 和 x86_64 架构中的重复 SigCode 定义
- 统一信号代码处理逻辑到 signal_types.rs 模块
- 更新相关文件的导入路径以适应新的 SigCode 位置

Signed-off-by: longjin <longjin@DragonOS.org>

---------

Signed-off-by: longjin <longjin@DragonOS.org>
2025-10-08 14:19:27 +08:00
Shenjie Yang 81d1381f27
factor(clone, mempolicy, cpuinfo): 实现clone3和get_mempolicy系统调用,并实现`/proc/cpuinfo`文件 (#1299)
* feat(procfs): 添加/proc/cpuinfo

- 新增/proc/cpuinfo文件支持,提供CPU硬件信息查询功能
- 实现x86_64架构下的CPU信息采集逻辑,包括:
- 厂商信息、型号、步进版本
- CPU频率、缓存大小
- APIC ID和CPU特性标志
- 将SMP_BOOT_DATA的可见性从pub(super)改为pub,以便cpuinfo模块访问
- 在ProcFS中注册cpuinfo文件并添加相关文件类型定义
- 实现open_cpuinfo方法处理文件打开请求
- 添加generate_cpu_info方法生成各CPU核心的详细信息

refactor(clone): 重构clone系统调用实现并添加clone3支持

- 将clone系统调用的核心逻辑提取到clone_utils模块
- 新增clone3系统调用实现,支持更现代的进程创建方式
- 添加CloneArgs结构体处理clone3的用户空间参数
- 实现从用户空间复制clone参数的验证和转换逻辑
- 扩展CloneFlags支持CLONE_INTO_CGROUP标志

feat(memory): 实现get_mempolicy系统调用

- 添加get_mempolicy系统调用处理NUMA内存策略查询
- 实现Mempolicy结构体和相关枚举类型
- 提供用户空间与内核空间的内存策略数据转换方法
- 支持查询默认内存策略和特定地址的策略
- 添加mempolice_utils模块处理内存策略相关逻辑

* fix: fmt

* fix(fork): PAGE_SIZE的module导入错误

* fix(process): 修正clone_args相关代码

- 将copy_clone_args_from_user方法从fork.rs移至clone_utils.rs
- 将CloneArgs重命名为PosixCloneArgs并设为私有结构体
- 改进用户空间数据读取方式,避免越界读取
- 修复信号检查逻辑中的错误条件判断

Signed-off-by: longjin <longjin@DragonOS.org>

* fix(syscall): 修正clone_utils.rs中的用户空间数据读取逻辑

- 将set_tid参数的读取方式从指针转换为常量指针
- 修正读取用户空间数据时的偏移计算,确保正确读取每个线程ID

Signed-off-by: longjin <longjin@DragonOS.org>

---------

Signed-off-by: longjin <longjin@DragonOS.org>
Co-authored-by: longjin <longjin@DragonOS.org>
2025-10-06 17:32:47 +08:00
LoGin afc09a460b
feat(process): 新增进程资源限制(rlimit)管理功能及相关系统调用 (#1300)
-
为ProcessControlBlock添加rlimits字段,存储进程资源限制,默认初始化典型值(如nofi
le软限制1024、硬限制65536)
- 实现进程rlimit的获取、设置及继承机制(inherit_rlimits_from)
- 在dup2、fcntl等函数中添加RLIMIT_NOFILE检查,确保文件描述符不超过软限制
- 实现sys_prlimit64和sys_setrlimit系统调用,支持查询和设置进程资源限制
- 调整测试用例,添加dup_test到gvisor白名单,忽略未支持的测试

Signed-off-by: longjin <longjin@DragonOS.org>
2025-09-27 22:01:34 +08:00
kaleidoscope416 1e90730d34
fix(syscall): 修复mincore系统调用 (#1301) 2025-09-26 16:36:24 +08:00
LoGin 5946260e1e
fix(syscall): 修复 setdomainname 和 sethostname 系统调用 (#1298)
- 添加 CAP_SYS_ADMIN 权限检查
- 修复字符串处理逻辑
- 确保 UnameTest 测试通过

Signed-off-by: longjin <longjin@DragonOS.org>
2025-09-25 20:11:02 +08:00
LoGin 6b7088f6b4
fix(syscall): 处理不支持的系统调用,返回错误而非panic (#1297)
* fix(syscall): 处理不支持的系统调用,返回错误而非panic

- 将不支持的系统调用处理从panic改为记录error日志
- 返回ENOSYS错误码表示功能未实现
- 添加相关测试用例到白名单

---------

Signed-off-by: longjin <longjin@DragonOS.org>
2025-09-25 20:00:30 +08:00
LoGin cb2487a7f3
feat: implement sys_capget and sys_capset system calls (#1293)
- Add capability management system calls to DragonOS kernel
- Implement capget/capset with version negotiation and capability rules
- Add documentation for sys_capget/sys_capset design and implementation
- Add test cases for both system calls
- Update documentation structure to include new capability syscall documentation

---------

Signed-off-by: longjin <longjin@DragonOS.org>
2025-09-25 17:17:26 +08:00
kaleidoscope416 be0c86d7ed
feat(syscall/mincore):实现了mincore系统调用 (#1258)
* feat(syscall/mincore):实现了mincore系统调用

* 往usebuffer直接写入,在get_page处改为拿一次锁

* 更改原先测试

* 完成can_do_mincore

* fmt

* fix(mm): 完善mincore系统调用实现

- 添加大页支持,在遇到大页时按4K粒度填充
- 修复地址对齐检查,将assert改为返回EINVAL错误
- 严格验证用户缓冲区映射与写权限
- 修复VMA查找和排序逻辑,确保地址连续性判断正确
- 添加覆盖完整性校验
- 重写mincore测试用例,增加边界条件和文件映射测试

Signed-off-by: longjin <longjin@DragonOS.org>

---------

Signed-off-by: longjin <longjin@DragonOS.org>
Co-authored-by: longjin <longjin@DragonOS.org>
2025-09-24 23:12:07 +08:00
LoGin ef296a34e1
feat(ipc): 实现IPC命名空间初步支持 (#1288)
* feat(ipc): 实现IPC命名空间第一阶段支持

- 添加IpcNamespace结构体并集成到NsProxy中
- 将全局SHM_MANAGER重构为per-ns ShmManager
- 修改shm相关系统调用以支持命名空间隔离
- 添加VMA的shm_id字段用于精确维护映射计数
- 新增IPC命名空间测试用例
- 更新相关文档

Signed-off-by: longjin <longjin@DragonOS.org>

* fmt

Signed-off-by: longjin <longjin@DragonOS.org>

---------

Signed-off-by: longjin <longjin@DragonOS.org>
2025-09-24 16:15:09 +08:00
linfeng 509ee34586
refactor: Add system call number to name conversion (#1279)
* refactor: Add system call number to name conversion

add a ptmx test.
fix typo.

Signed-off-by: Godones <chenlinfeng25@outlook.com>

* add a tty test

Signed-off-by: Godones <chenlinfeng25@outlook.com>

* fix: fix ptmx bugs.

1. Fix epoll bug.
2. Fix ptmx logic.
3. update tests

Signed-off-by: Godones <chenlinfeng25@outlook.com>

---------

Signed-off-by: Godones <chenlinfeng25@outlook.com>
2025-09-16 01:48:40 +08:00
LoGin 0c8f73d472
refactor(ipc): Refactor signal handling mechanism, optimize signal sharing between threads (#1282)
- Migrate signal handlers from SignalStruct to the new SigHand structure
- Properly implement sharing of signal handlers between threads
- Add shared signal handling, flag bits, and PID management to SigHand
- Remove the unnecessary sig_struct spinlock on x86_64 architecture
- Optimize the signal handling process to reduce lock usage and deadlock risks

Signed-off-by: longjin <longjin@DragonOS.org>
2025-09-13 21:30:09 +08:00
Shenjie Yang d663df1e91
fix(mm/buddy): correct page zeroing size and add boundary checks (#1280)
fix(mm/buddy): correct page zeroing size and add boundary checks

- Fix incorrect page zeroing size by using PAGE_SIZE instead of block size (1 <<
order)
- Add boundary check to return early when new_page_list_addr equals base
- Add validation to ensure second page list has sufficient capacity before use
- Improve code comments to clarify page metadata handling

---------

Co-authored-by: xbohodx2024 <xbohodx2024@gmail.com>
Signed-off-by: xbohodx2024 <xbohodx2024@gmail.com>
Signed-off-by: longjin <longjin@DragonOS.org>
2025-09-13 01:45:50 +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
Shenjie Yang 6ebe30bfa9
feat(syscall/getxattr): 实现关于扩展参数xattr的六个系统调用 (#1248)
* feat(syscall/getxattr): 实现关于扩展参数xattr的六个系统调用

- SYS_SETXATTR, SYS_LSETXATTR, SYS_FSETXATTR

- SYS_GETXATTR, SYS_LGETXATTR, SYS_FGETXATTR

* fix(getxattr): 修改无法获取值长度的问题

* fix(ext4): 修复ext4文件系统的缓存一致性问题,实现LockedExt4Inode的resize函数

* fix(xattr): 增加关于setxattr和getxattr的测试函数

* fix(xattr): 修改test_sgxattr测试程序,使其强制在ext4文件系统中测试

* fix(xattr): 测例文件移动到对应位置

* fix(xattr): 删除测例的dadk文件

* fix(xattr): 修改测例的名字

* fix(link, unlink, symlink): 在ext4中增加create_with_data使得能够创建symlink; 修复ext4的link和unlink的逻辑bug

* fix(unlink)

* fmt

Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>

---------

Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
Co-authored-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
2025-09-05 22:07:41 +08:00
LoGin d5158a0f48
fix(futex): 修复futex键不存在时的错误处理 (#1276)
- 当futex键不存在时,不再返回EINVAL错误,而是创建新的FutexHashBucket

Signed-off-by: longjin <longjin@DragonOS.org>
Co-authored-by: jensenwei007 <jensenwei007@gmail.com>
2025-09-04 21:39:49 +08:00
LoGin a8e4a826a4
feat(build, kernel): 添加内核版本信息生成与显示功能 (#1269)
添加了内核构建时自动生成版本信息的功能,包括版本号、构建时间、编译器信息、Git提交等。
在内核启动时打印版本信息,并可通过/proc/version文件查询。更新了about应用使用uname系统调用

Signed-off-by: longjin <longjin@DragonOS.org>
2025-08-28 13:16:31 +08:00
LoGin 97d321d713
feat: 实现 UTS 命名空间支持并添加 hostname/domainname 系统调用 (#1268)
* feat(process): 实现 UTS 命名空间支持

添加 UTS 命名空间实现,用于隔离系统标识信息如主机名和域名。
更新 uname 系统调用以使用当前进程的 UTS 命名空间。
改进 UserBufferWriter API 以支持 Clone 类型。

Signed-off-by: longjin <longjin@DragonOS.org>

* feat(kernel): 添加 sethostname 系统调用支持

实现 sethostname 系统调用,允许用户空间程序设置系统主机名。
包括 UTS 命名空间的修改、系统调用处理程序的实现以及相关配置文件的添加。

Signed-off-by: longjin <longjin@DragonOS.org>

* feat(syscall): 添加 setdomainname 系统调用

- 在 UtsNamespace 中实现 set_domainname 方法
- 添加 sys_setdomainname 系统调用实现
- 修改 sys_sethostname 中的长度检查逻辑
- 添加 setdomainname 功能的单元测试

Signed-off-by: longjin <longjin@DragonOS.org>

---------

Signed-off-by: longjin <longjin@DragonOS.org>
2025-08-25 00:34:23 +08:00
LoGin 86929880ad
feat: mntns支持unshare (#1262)
Signed-off-by: longjin <longjin@DragonOS.org>
2025-08-23 18:20:17 +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
LoGin ba4af7f718
feat: Add sys_unshare (#1260)
* feat(namespace): 实现unshare系统调用及相关功能

- 新增unshare.rs模块实现ksys_unshare
- 修改nsproxy.rs添加clone_inner方法
- 公开create_new_namespaces和create_pid_namespace方法
- 在user_namespace.rs添加current_user_ns方法
- 添加sys_unshare系统调用实现

Signed-off-by: longjin <longjin@DragonOS.org>

* add util-linux package

* 调试unshare

Signed-off-by: longjin <longjin@DragonOS.org>

* fix: 修复futex处理中的用户空间内存访问问题

在`futex.rs`中增加了`safe_read`、`safe_read_u32`和`safe_write_u32`方法,确保在访问用户空间内存时进行安全检查,避免无效地址导致的错误。同时,优化了`handle_futex_death`方法,使用新的安全读取和写入方法,确保在进程死亡时正确处理futex。

Signed-off-by: longjin <longjin@DragonOS.org>

* refactor(futex): 重构RobustListHead结构并移除调试日志

- 将RobustListHead拆分为PosixRobustListHead和RobustListHead
- 为RobustListHead实现Deref和DerefMut trait
- 移除多余的调试日志输出
- 优化robust list处理逻辑

Signed-off-by: longjin <longjin@DragonOS.org>

---------

Signed-off-by: longjin <longjin@DragonOS.org>
2025-08-18 08:43:51 +08:00