Commit Graph

1012 Commits

Author SHA1 Message Date
aLinChe ffc628df53
feat setitimer/getitimer and fix signal stack logic (#1377)
* add sys_get/setitimer and fix sig

Signed-off-by: aLinChe <1129332011@qq.com>

* feat cputime

Signed-off-by: aLinChe <1129332011@qq.com>

* fix sas and fix ABI

Signed-off-by: aLinChe <1129332011@qq.com>

* fix fmt

Signed-off-by: aLinChe <1129332011@qq.com>

* fix diff arch::on_sig_stack compile bug

Signed-off-by: aLinChe <1129332011@qq.com>

* fix better code

Signed-off-by: aLinChe <1129332011@qq.com>

* fix arch

Signed-off-by: aLinChe <1129332011@qq.com>

* fix fmt

Signed-off-by: aLinChe <1129332011@qq.com>

* refactor: 简化定时器类型格式化逻辑

- 移除不必要的字符串转换操作
- 使用Debug trait直接格式化枚举值

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

---------

Signed-off-by: aLinChe <1129332011@qq.com>
Signed-off-by: longjin <longjin@DragonOS.org>
Co-authored-by: longjin <longjin@DragonOS.org>
2025-11-19 00:33:56 +08:00
LoGin d93301b512
feat: 实现基于异常表的安全用户空间内存访问机制 (#1383)
* feat: 实现基于异常表的安全用户空间内存访问机制

- 新增异常表机制,在系统调用中安全处理用户空间内存访问错误
- 实现带异常表保护的memcpy和memset函数,防止无效用户地址导致内核在内存拷贝处以及pagefault处理程序之间反复横跳
- 重构用户空间访问API,提供安全的UserBuffer包装类型
- 更新页错误处理程序,支持异常表修复路径
- 添加异常表测试程序,验证各种边界情况
- 更新内存管理文档,详细说明异常表设计原理和使用场景

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

* chore: 更新应用黑名单配置

- 添加 test_ebpf_new, test_ebpf_tp 到黑名单,原因:aya上游发版问题导致CI失败

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

---------

Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-18 21:02:07 +08:00
LoGin 58cddf7629
fix(rtc): 修复读取时间失败的问题 (#1384)
Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-18 19:46:33 +08:00
LoGin e85d1cd250
fix(futex): 修复futex唤醒逻辑和旧值保存问题 (#1382)
- 修复uaddr2唤醒逻辑,当没有等待者时跳过唤醒而非返回错误
- 修复futex操作中旧值保存问题,避免后续修改影响返回值

Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-18 11:55:13 +08:00
Shenjie Yang 95dd6f7fd2
feat(vfs): 添加路径遍历和目录切换的权限检查 (#1348)
* feat(vfs): 添加路径遍历和目录切换的权限检查

- 新增permission模块处理inode权限检查
- 在路径遍历和chdir/fchdir系统调用中添加权限验证

* feat(filesystem): 实现do_fchmodat文件权限修改功能

* feat(permission)

* fmt

* fix(arch_prctl): 优化arch_prctl错误处理逻辑

* fmt

* fix(fs/permission): 重构权限位计算逻辑,启用测例

- 重构权限位计算逻辑使用ModeType常量
- 更新gvisor测试白名单添加chdir相关测试

* 暂时block掉gvisor的FchdirTest.PermissionDenied测试用例

* refactor(vfs): 将权限检查函数重构为Cred结构体方法

- 将inode_permission及相关辅助函数从独立函数重构为Cred结构体方法
- 更新sys_chdir和sys_fchdir调用权限检查的新接口
- 优化代码组织结构,减少模块间依赖

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

---------
Signed-off-by:  xbohodx2024 <xbohodx2024@gmail.com>
Signed-off-by: longjin <longjin@DragonOS.org>
Co-authored-by: longjin <longjin@DragonOS.org>
2025-11-17 23:46:28 +08:00
LoGin 20db99ff8f
refactor(futex): 优化futex唤醒逻辑和共享键生成机制 (#1376)
- 重构futex等待唤醒逻辑,明确区分正常唤醒、超时和信号唤醒
- 引入SharedKeyKind枚举,改进共享futex键的生成方式
- 为AddressSpace添加全局唯一ID,支持私有匿名映射的跨线程同步
- 修复clear_child_tid唤醒逻辑,使用FUTEX_SHARED标志
- 更新测试用例,移除不再适用的阻塞项

Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-15 13:55:29 +08:00
LoGin 5ca5c0cfd6
fix(futex): 修复futex唤醒逻辑和测试用例 (#1374)
- 修复futex唤醒算法中的无限循环问题,改为基于初始队列长度的有限遍历
- 实现Linux语义:当nr_wake为0时至少唤醒一个等待者
- 优化队列处理逻辑,正确处理key和bitset匹配条件
- 清理测试用例黑名单,移除已修复的测试项

Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-13 22:59:24 +08:00
LoGin 2add5d18a0
feat(futex): 实现优先级继承(PI) futex功能 (#1373)
- 新增pi_futex模块,实现FUTEX_LOCK_PI、FUTEX_UNLOCK_PI和FUTEX_TRYLOCK_PI系统调用
- 修改futex模块内部结构体字段可见性以支持PI功能
- 在syscall中集成PI futex系统调用处理
- 更新测试用例配置,启用部分PI futex相关测试

Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-13 20:29:51 +08:00
LoGin 405aed3286
fix(futex): 修复robust futex实现中的竞态条件和逻辑错误 (#1372)
- 修复在get_robust_list中正确处理未设置robust list的情况
- 在exit_robust_list中重新从用户空间读取最新robust list内容
- 使用原子操作替换原有的非原子读写操作
- 修复FutexIterator中的链表遍历逻辑

Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-13 16:51:00 +08:00
LoGin c9fb7305e2
fix: 修复拷贝线程的时候,错误的设置用户栈指针的bug (#1370)
Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-13 11:53:15 +08:00
LoGin 98d9f204c2
fix(vfs): 修复syncfs系统调用中文件描述符验证问题 (#1369)
- 在syncfs系统调用中添加文件描述符验证逻辑
- 检查文件描述符是否存在以及是否以O_PATH模式打开
- 当文件描述符无效或为O_PATH模式时返回EBADF错误
- 添加sync_test到gvisor测试白名单中

Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-12 22:41:49 +08:00
LoGin 209091915d
feat(smp): 实现SYS_GETCPU系统调用 (#1368)
- 新增sys_getcpu模块,实现获取当前CPU编号和NUMA节点编号功能
- 在smp/syscall模块中导出sys_getcpu模块
- 在gvisor测试白名单中添加getcpu相关测试用例
- 系统调用返回当前CPU ID,对于NUMA节点固定返回0(DragonOS不支持NUMA)

Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-12 21:06:16 +08:00
LoGin 40a3a3ec72
refactor(smp): 将smp模块的系统调用适配syscall table (#1367)
Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-12 20:28:40 +08:00
LoGin 9e7725b06c
feat(process): 实现信号备用栈的拷贝逻辑 (#1363)
- 在进程创建流程中拷贝信号备用栈,确保子进程正确继承父进程的sigaltstack
设置
- 从测试黑名单中移除ForkTest.SigAltStack

Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-12 14:58:51 +08:00
LoGin 4db631ef1d
feat(process): 完善进程等待和克隆的语义实现 (#1362)
* fix(process): 修复wait4系统调用中错误码处理和子进程验证逻辑

- 将ESRCH错误码改为ECHILD以符合POSIX规范
- 增加子进程关系验证,确保只能等待当前进程的子进程
- 从测试黑名单中移除BadChild测试用例

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

* feat(process): 实现 wait 系统调用的 __WALL 和 __WCLONE 选项支持

- 新增 child_matches_wait_options 函数用于检查子进程与等待选项的匹配
- 在 do_wait 中根据 __WALL/__WCLONE 选项过滤子进程
- 为 KernelCloneArgs 添加 normalize_exit_signal 方法,正确处理线程组的
exit_signal
- 修复进程退出时仅在有有效 exit_signal 时才向父进程发送信号
- 更新 sys_clone 以支持旧版 clone 系统调用的 exit_signal 参数

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

---------

Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-12 10:33:05 +08:00
LoGin 9c90aadb0a
fix(mm): 修复伙伴分配器递归死锁问题 (#1361)
- 移除分配过程中释放空页链表页的操作,避免触发buddy_free导致递归死锁
- 简化页链表管理逻辑,始终保留空页链表页而不释放
- 优化伙伴释放时的页链表选择逻辑,确保正确找到有空位的页链表

Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-12 00:03:47 +08:00
LoGin 2b3d5e40a5
feat(kernel): 完善信号处理和进程等待机制 (#1360)
- 实现kill系统调用的信号0权限检查功能
- 修复进程等待逻辑中的ECHILD错误处理
- 添加PID释放的防御性编程保护
- 更新gvisor测试配置

Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-11 23:49:34 +08:00
LoGin ca2bf5fafe
fix(arch/x86_64): 重构信号栈帧结构以兼容Linux (#1357)
- 新增与Linux完全兼容的ucontext、sigcontext、fpstate结构体
- 实现内核与用户态FP状态的安全转换
- 改进信号处理函数的寄存器恢复逻辑
- 增强SROP攻击防护机制
- 修复信号处理中FP状态保存与恢复的问题

Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-11 16:15:55 +08:00
LoGin b420dd0736
fix: 修复/proc/self/exe符号链接处理问题 (#1359)
- 修复符号链接路径拼接时rest_path为空的情况
- 在fork时正确继承父进程的可执行文件路径
- 在execve中解析符号链接的绝对路径
- 添加/proc/self/exe功能测试用例

Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-11 16:15:38 +08:00
aLinChe 38c8719041
fix: sys_sigaction, sys_sigprocmask (#1347)
修复 `sigaction`、`sigprocmask` 系统调用的行为,使其与 gVisor 测试套件的预期语义保持一致。

- **修复 Sigaction**:
  - **BadSigsetFails**: `rt_sigaction` 系统调用现在会严格校验用户传入的 `sigsetsize` 参数。如果该大小与内核内部 `SigSet` 结构体的大小不一致,将立即返回 `EINVAL`,这与 Linux 内核的行为完全一致。
  - **SetSigkillFails & SetSigstopFails**: 实现比原生 Linux 更严格的安全检查以通过 gVisor 测试。Linux 允许将 `SIGKILL` 或 `SIGSTOP` 的处理器重置为默认值(SIG_DFL),而 gVisor 的测试期望任何对这两个信号的设置尝试(即 act 指针不为 NULL)都应立即失败并返回 `EINVAL`。代码已按此更严格的语义进行调整。

- **修复 SigProcMask**:
  - 如果 newset 为 NULL,内核将完全跳过所有修改屏蔽集的逻辑,仅获取当前屏蔽集并按需返回给 oldset。只有当 newset 指针有效时,内核才会根据 how 参数(SIG_BLOCK, SIG_UNBLOCK, SIG_SETMASK)执行相应的修改操作。

**注意**:
对 `sigaction` 的 `SIGKILL`/`SIGSTOP` 处理是为满足 gVisor 安全模型的特定要求,其行为比标准 Linux 内核更为严格。


---------

Signed-off-by: aLinChe <1129332011@qq.com>
Signed-off-by: longjin <longjin@DragonOS.org>
Co-authored-by: longjin <longjin@DragonOS.org>
2025-11-11 15:50:32 +08:00
LoGin be0d8ac90b
fix(process): 修复vfork实现并添加相关测试 (#1358)
- 修正vfork系统调用实现,使用正确的CLONE_VFORK | CLONE_VM标志
- 在execve中添加vfork完成通知机制
- 添加vfork相关测试用例到白名单

Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-11 15:19:33 +08:00
LoGin b00f19af9e
fix: 修复信号处理和fork时的FP状态管理问题 (#1356)
- 在信号处理前保存FP状态并加载标准FP环境
- 在fork时确保保存当前FP寄存器状态
- 更新测试用例白名单以包含FP信号fork & nested测试

Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-11 10:14:14 +08:00
kaleidoscope416 678cad5447
fix(vfs): 当以相对路径 + dirfd 调用 openat/unlinkat 时,父目录被错误解析为 root 的问题。 (#1355)
* 修复do_remove_dir当传入相对路径和dirfd时将父文件夹索引设为root的错误

* 修复do_sys_openat2与 do_unlinkat当传入相对路径和dirfd时将父文件夹索引设为root的错误

---------

Signed-off-by: longjin <longjin@DragonOS.org>
Co-authored-by: longjin <longjin@DragonOS.org>
2025-11-11 00:56:41 +08:00
LoGin ecd3ee3709
fix: 修复进程地址空间复制时的filemap页面映射问题 (#1354)
* fix: 修复进程地址空间复制时的filemap页面映射问题

- 实现正确的写时复制机制,为私有映射设置只读权限
- 修复文件映射VMA拆分时的偏移计算问题

Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-11 00:28:36 +08:00
LoGin 71a2499385
fix errors cause by git merge in pr #1339 (#1352)
Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-10 13:38:39 +08:00
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