火花
7e8a84fb73
feat(filesystem): improve mknod support for devfs and tmpfs ( #1698 )
...
Implement proper mknod syscall support in DevFS and TmpFS by adding
logic to create character devices, block devices, and FIFO pipes
based on the mode parameter.
- DevFS: Add mknod method to create device nodes
- TmpFS: Enhance mknod to correctly set file type and device number
- Remove ENOSYS error for block/char device creation in TmpFS
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
2026-01-22 11:51:31 +08:00
xboHodx
f7298ff726
feat: 增强VFS系统调用并重构sysinfo ( #1622 )
...
- 修复do_fchmodat中空路径返回ENOENT的问题
- 在do_sys_openat2中添加O_NOFOLLOW符号链接处理
- 改进do_mkdir_at的权限检查顺序以符合Linux语义
- 重构sysinfo系统调用为独立模块并添加进程计数
- 添加uptime_secs函数并优化时间更新逻辑
- 移除gvisor测试黑名单以启用更多测试用例
Signed-off-by: xbohodx2024 <xbohodx2024@gmail.com>
2026-01-17 22:33:55 +08:00
LoGin
6222a7bb71
refactor(mm): 将VMA\pageManager\VFS的锁机制从自旋锁改为互斥锁 ( #1647 )
...
* refactor(mm): 将VMA\pageManager\VFS的锁机制从自旋锁改为互斥锁
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-14 00:12:20 +08:00
LoGin
a0ac9d1965
refactor(mm): 优化地址空间切换与锁机制 ( #1646 )
...
- 在进程切换时使用无锁快速路径切换地址空间,提升调度性能
- 将地址空间内部锁从RwLock替换为RwSem,支持I/O操作时的等待
- 为AddressSpace添加table_paddr字段和make_current方法,支持无锁页表切换
- 统一将read_irqsave/write_irqsave替换为read/write,简化锁使用
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-13 23:22:49 +08:00
Yuming Jiang
58676c8e91
refactor(mm): 重命名 verify_area 为 access_ok 并改进文档 ( #1597 )
...
重命名理由:
- verify_area 暗示"已验证可访问",具有误导性
- access_ok 强调"快速范围检查",符合实际行为
文档改进:
- 明确说明这只是第一层检查,不保证真正可访问
- 添加粗体警告,防止误用为"已验证可访问"
- 补充典型用法示例,展示配合 copy_to_user 的正确模式
这将函数语义从"验证已完成"纠正为"可以尝试访问",
避免开发者误认为 Ok(()) 代表地址已映射或真正可访问。
2026-01-03 22:06:38 +08:00
LoGin
d3aea1d238
refactor(syscall): 重构系统调用处理为独立模块 ( #1580 )
...
- 将bpf、eventfd、poll、ppoll、perf_event_open、rseq、getrandom系统调用从Syscall
trait移至独立模块
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-01 19:16:05 +08:00
Samuel Dai
a04c6c1ca6
fix(net): Fix UDP missing features and miss polls ( #1571 )
...
feat(net): 增强UDP套接字功能并修复多个网络问题
- 实现UDP套接字连接模式下的数据包过滤和预连接数据处理
- 添加UDP套接字断开连接支持,包括AF_UNSPEC和端口0处理
- 实现UDP套接字缓冲区大小配置(SO_SNDBUF/SO_RCVBUF)
- 添加UDP套接字shutdown功能支持
- 修复UDP发送到0.0.0.0地址的处理逻辑
- 实现UDP套接字ioctl FIONREAD/TIOCOUTQ支持
- 修复UDP recvmsg/sendmsg系统调用实现
- 增强TCP套接字listen和bind端口处理
- 修复网络接口绑定和地址转换逻辑
- 改进readv系统调用对套接字的特殊处理
Signed-off-by: samuka007 <samuka007@dragonos.org>
2026-01-01 13:23:31 +08:00
Samuel Dai
84368a9419
Allow offset == len and add NE read/write ( #1587 )
2026-01-01 02:27:20 +08:00
LoGin
8e1c9051dc
feat(vfs): 改进pread/pwrite和getdents的用户缓冲区处理 ( #1568 )
...
- 新增pread_pwrite_common模块,实现Linux兼容的部分缓冲区访问语义
- 修改IoVecs::scatter方法返回实际写入字节数
- 修复getdents错误处理逻辑,遵循Linux语义返回已写入字节数
- 优化UserBuffer清零操作,临时关闭内核写保护
- 更新测试配置,添加部分坏缓冲区测试
Signed-off-by: longjin <longjin@DragonOS.org>
2025-12-29 11:11:57 +08:00
LoGin
073432f930
feat: 实现 Restartable Sequences (rseq) 机制 ( #1565 )
...
- 新增 rseq 内核支持,包括系统调用、进程状态管理和用户态辅助向量
- 在调度、信号处理和异常返回路径中集成 rseq 事件处理
- 添加 rseq 相关文档和测试用例
- 修复用户栈扩展逻辑中的边界检查问题
- 调整 Makefile 构建选项以支持测试
Signed-off-by: longjin <longjin@DragonOS.org>
2025-12-27 20:34:35 +08:00
火花
3c0a4eb13a
refactor(procfs): 重构为基于模板的模块化架构( #1514 )
...
- 引入模板系统(template模块),提供ProcFile、ProcDir、ProcSym泛型包装器
- 将原有单体式procfs拆分为模块化结构:cmdline、cpuinfo、meminfo、mounts、pid、se
lf_、sys、thread_self、version等
- 实现动态进程目录(/proc/[pid]),按需创建进程相关文件
- 新增/proc/kmsg、/proc/version_signature等文件支持
- 改进命名空间文件(/proc/*/ns/*)实现,支持动态inode ID和魔法链接
- 优化文件描述符目录(/proc/[pid]/fd)实现,支持chroot视图
- 保持与现有测试的兼容性,包括gVisor测试套件
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
2025-12-27 00:37:56 +08:00
LoGin
12b9e0629a
feat(vfs): 实现写/截断/修改所有者时清理suid/sgid位 ( #1562 )
...
* feat(vfs): 实现写/截断/修改所有者时清理suid/sgid位
- 在文件写入、截断和chown操作后,根据Linux语义清理suid/sgid位
- 修复init进程能力集,移除CAP_FSETID以符合gVisor测试预期
- 修复UserBufferWriter边界检查,防止缓冲区溢出
Signed-off-by: longjin <longjin@DragonOS.org>
2025-12-27 00:23:06 +08:00
LoGin
b5017cfa5c
feat(mm): 改进共享匿名映射和mremap的Linux兼容性 ( #1552 )
...
* feat(mm): 改进共享匿名映射和mremap的Linux兼容性
- 修复共享匿名映射的页偏移计算,添加超出范围SIGBUS检查
- 改进mremap系统调用,支持MREMAP_FIXED、原地扩展、复制映射等语义
- 完善VM_SHARED和VM_MAYSHARE标志的转换逻辑
- 重构AnonSharedMapping,支持固定大小和页缓存管理
Signed-off-by: longjin <longjin@DragonOS.org>
* fix(mm): 将文件页偏移替换为后备对象页偏移以提高内存管理一致性
---------
Signed-off-by: longjin <longjin@DragonOS.org>
2025-12-26 00:05:53 +08:00
LoGin
f76025783b
feat(net/socket): 实现Unix域套接字完整功能与gVisor测试兼容性 ( #1554 )
...
* feat(net): 实现Unix域套接字完整功能与系统调用支持
- 新增Unix域数据报和流套接字的shutdown、ioctl(FIONREAD/TIOCOUTQ)支持
- 实现Unix域套接字的SCM_RIGHTS文件描述符传递功能
- 新增recvmmsg系统调用支持多消息接收
- 修复socket创建逻辑,区分VFS打开与系统调用创建的套接字文件
- 完善用户空间缓冲区访问的安全检查
Signed-off-by: longjin <longjin@DragonOS.org>
* fix(epoll): 修复epoll事件掩码和信号中断处理
- 在epoll_ctl操作中强制添加EPOLLERR和EPOLLHUP事件以符合Linux语义
- 修复EPOLLEXCLUSIVE标志在MOD操作中的处理逻辑
- 将epoll_wait信号中断错误码从ERESTARTSYS改为EINTR以符合Linux规范
- 修复eventfd的最大计数值处理,使用EVENTFD_MAX常量替代u64::MAX
Signed-off-by: longjin <longjin@DragonOS.org>
* feat(unix): 实现SCM_RIGHTS和SCM_CREDENTIALS支持
- 为Unix域数据报和流式套接字添加SCM_RIGHTS(文件描述符传递)和SCM_CREDENTIALS(
凭据传递)支持
- 实现SO_PASSCRED套接字选项,支持自动附加凭据
- 修复epoll事件处理,确保EPOLLET和EPOLLONESHOT标志符合Linux语义
- 改进recvmmsg系统调用,正确处理超时和WAITFORONE标志
- 添加辅助消息工具模块,统一处理控制消息的序列化和反序列化
- 更新gVisor测试白名单,启用socket_unix_pair_test测试
Signed-off-by: longjin <longjin@DragonOS.org>
* refactor(net/socket): 优化用户空间地址写入和原子操作
- 重构 Endpoint::write_to_user,提取 write_sockaddr_to_user 内部函数
- 新增 write_to_user_msghdr 方法用于 recvmsg 场景
- 统一原子操作内存序(Acquire/Release)
- 修复 recvmmsg 和 recvmsg 的用户空间缓冲区访问
- 优化 Unix 数据报套接字的发送/接收逻辑
- 调整 SIOCGIFCONF 中环回接口顺序以满足测试要求
Signed-off-by: longjin <longjin@DragonOS.org>
---------
Signed-off-by: longjin <longjin@DragonOS.org>
2025-12-25 23:34:48 +08:00
LoGin
bccc0e391a
refactor(net): 重构网络系统调用为syscall table机制 ( #1551 )
...
* refactor(net): 重构网络系统调用为syscall table机制
- 将单个syscall.rs文件拆分为模块化结构,每个系统调用独立文件
- 新增syscall/mod.rs作为模块入口,统一导出所有网络系统调用处理器
- 实现Syscall trait的统一接口,支持参数格式化和错误处理
- 移除原syscall.rs中的网络系统调用实现,迁移至新架构
- 保持原有功能不变,仅重构代码组织结构
Signed-off-by: longjin <longjin@DragonOS.org>
* refactor(net): 统一使用UserBufferReader/Writer进行用户空间内存访问
- 在Endpoint::write_to_user中替换verify_area为UserBufferReader/Writer
- 移除accept/accept4中冗余的SOCK_CLOEXEC和SOCK_NONBLOCK常量定义
- 在getsockopt中增加optval长度限制并统一使用UserBufferReader/Writer
Signed-off-by: longjin <longjin@DragonOS.org>
---------
Signed-off-by: longjin <longjin@DragonOS.org>
2025-12-25 11:38:23 +08:00
LoGin
31d25c7478
feat(net): 完善Unix域数据报套接字功能 ( #1550 )
...
* feat(net): 完善Unix域数据报套接字功能
- 为MsgHdr结构体添加64位平台填充字段以保持与Linux布局一致
- 实现Unix域数据报套接字的SO_SNDBUF、SO_RCVBUF、SO_SNDTIMEO、SO_RCVTIMEO选项支持
- 添加sendmsg系统调用支持,完善recvmsg实现
- 支持SOCK_RAW类型映射到SOCK_DGRAM,遵循Linux行为
- 实现发送缓冲区记账机制,支持阻塞/非阻塞发送等待
- 添加MSG_PEEK和MSG_TRUNC标志支持,完善数据报截断处理
- 修复getsockopt系统调用,支持更多选项类型
- 在recv/recvfrom/send/sendto中正确处理文件描述符的O_NONBLOCK标志
Signed-off-by: longjin <longjin@DragonOS.org>
2025-12-25 00:22:02 +08:00
LoGin
a59cc0e91e
fix: 修复用户空间内存访问和页面回收问题 ( #1522 )
...
* fix: 修复用户空间内存访问和页面回收问题
- 修复 IoVecs 构造时对零长度缓冲区的验证,确保符合 Linux 语义
- 修复 scatter 方法在遇到不可访问内存时的错误处理,避免部分写入后返回错误
- 修复 readv/preadv 等系统调用,使其支持分块读取和部分成功写入
- 修复页面回收逻辑,避免回收仍被映射的文件页
- 修复 UserBufferReader/Writer 对空指针的检查,防止未定义行为
- 调整缓存阈值并添加 gVisor 测试的内存检测逻辑
Signed-off-by: longjin <longjin@DragonOS.org>
* refactor(vfs): 优化 IoVecs 的用户空间内存访问检查与拷贝逻辑
- 移除冗余的 verify_area 和 UserBufferReader/Writer 检查,统一使用
user_accessible_len 进行访问性验证
- 在 gather 方法中使用 copy_from_user_protected 进行异常保护的拷贝,与 scatter
方法保持一致
- 改进错误处理逻辑,当部分数据已成功读取时返回已读取的数据,否则返回 EFAULT
Signed-off-by: longjin <longjin@DragonOS.org>
---------
Signed-off-by: longjin <longjin@DragonOS.org>
2025-12-22 11:53:40 +08:00
LoGin
5450a4bfc7
fix: fix chroot and tmpfs ( #1480 )
...
* feat(procfs): Add /proc/[pid]/mountinfo and /proc/[pid]/maps support
- Introduced new ProcFileType variants for /proc/[pid]/mountinfo and /proc/[pid]/maps.
- Implemented content generation for /proc/[pid]/mountinfo and /proc/[pid]/maps to align with Linux semantics.
- Updated ProcFS inode creation to include these new files for each process.
- Enhanced path handling in the VFS to ensure correct resolution based on process-specific root and current working directory.
This addition improves the process filesystem's functionality and compatibility with Linux behavior.
* feat(filesystem): Enhance page cache management in tmpfs
- Added an unevictable flag to the PageCache structure, allowing pages to be marked as unevictable to prevent reclamation.
- Updated the TmpfsInode structure to integrate page cache management, replacing direct data manipulation with page cache operations for read and write methods.
- Refactored truncate and resize methods to utilize the new page cache functionality, ensuring consistency and improved memory management.
* feat(filesystem): Enhance tmpfs functionality and VFS constraints
- Implemented support for readahead in tmpfs, allowing for optimized data retrieval.
- Added checks for filename length across various VFS operations to prevent errors related to excessively long names.
- Updated the tmpfs implementation to handle read and write operations directly through the page cache, improving memory management.
- Enhanced rename functionality to ensure type compatibility and empty directory checks during operations.
- Increased maximum path length and defined maximum single filename length for better filesystem compliance.
* refactor(fs): 重构tmpfs重命名逻辑并修复MountFSInode的move_to委托
- 将tmpfs跨目录移动逻辑提取为独立函数`tmpfs_move_entry_between_dirs`
- 优化锁顺序以避免死锁,按inode_id顺序锁定目录
- 修复MountFSInode::move_to中目标inode解包问题,确保正确委托给底层文件系统
Signed-off-by: longjin <longjin@DragonOS.org>
* feat(filesystem): Implement zero-page creation for tmpfs and enhance page fault handling
- Added `create_zero_pages` method to `InnerPageCache` for efficient zero-page creation, optimizing memory usage in tmpfs.
- Updated `Tmpfs` to utilize the new zero-page creation during read and write operations, ensuring seamless handling of page faults.
- Enhanced `PageFaultHandler` with `pagecache_fault_zero` to manage page faults specifically for tmpfs, allowing for direct page cache access without disk I/O.
This improves the performance and reliability of memory file systems by reducing unnecessary allocations and ensuring proper page management.
* refactor(syscall): Rename check_and_clone_cstr to vfs_check_and_clone_cstr for clarity
- Updated the user access module to introduce vfs_check_and_clone_cstr, enhancing clarity in its purpose for VFS operations.
- Refactored sys_openat and utimensat to utilize the new vfs_check_and_clone_cstr function, ensuring consistent handling of C string paths across the filesystem.
---------
Signed-off-by: longjin <longjin@DragonOS.org>
2025-12-16 14:05:27 +08:00
xboHodx
fd5cc66440
feat(fadvise64): 实现fadvise64系统调用和页面缓存管理功能 ( #1439 )
...
* feat(fs): 实现fadvise64系统调用和页面缓存管理功能
- 新增fadvise64系统调用实现
- 添加页面缓存范围写回和驱逐功能
- 改进预读机制,支持随机访问模式
- 扩展文件访问模式标志管理
* fmt
* feat(vfs): 添加带权限检查的文件描述符获取方法
- 在FileDescriptorVec中新增get_file_by_fd_not_raw方法
- 修改sys_fadvise64使用新方法进行权限检查
* 增强可读性
* 修改gvisor白名单
* refactor(vfs): 封装文件预读状态访问并优化fadvise64实现
- 将File结构体的ra_state字段改为私有并提供get/set方法
- 在sys_fadvise64中使用新的访问方法
- 修复fadvise64中页边界检查逻辑
- 移除syscall模块中未实现的fadvise64 stub
Signed-off-by: xbohodx <xbohodx2024@gmail.com>
2025-12-09 23:22:47 +08:00
kaleidoscope416
b5b18b765f
fix(vfs): 修复 pread64 系统调用的兼容性和错误处理 ( #1398 )
...
* fs: 修复 pread64 系统调用的兼容性和错误处理
- 验证 `offset` 参数:当偏移量为负数或发生溢出时返回 `EINVAL`。
- 验证用户缓冲区:使用 `new_checked` 确保内存已映射,从而正确返回 `EFAULT`。
- 检查文件类型:对不可定位的文件(如管道、Socket)返回 `ESPIPE`。
- 修复 `File::readable()` 中的权限检查:
- 对 `O_PATH` 文件描述符返回 `EBADF`。
- 对只写模式(Write-only)打开的文件返回 `EBADF` 而不是 `EPERM`。
- 修复了 gVisor `pread64` 测试集中的多个失败项,包括 `BadBuffer`、`CantReadSocketPair`、`WriteOnlyNotReadable`、`Pread64WithOpath`、`BadOffset` 和 `Overflow`。
* test
* copilot
* fmt
* 删去冗余的负数判断
* 增加注释
* refactor(syscall): improve user buffer access checks in pread64 and user access modules
- Updated SysPread64Handle to use new_checked for user buffer writing.
- Enhanced user access validation by replacing direct checks with user_accessible_len in UserBufferReader and UserBufferWriter.
Signed-off-by: longjin <longjin@DragonOS.org>
* 禁用preadv的不稳定测试
* fix(vfs): 修复文件可读性检查中的模式比较错误
- 将直接比较FileMode枚举改为比较访问模式位,确保O_WRONLY模式下的文件被正确识别为不
可读
Signed-off-by: longjin <longjin@DragonOS.org>
---------
Signed-off-by: longjin <longjin@DragonOS.org>
Co-authored-by: longjin <longjin@DragonOS.org>
2025-12-01 22:24:01 +08:00
LoGin
bb7a632c2b
feat(sched): implement POSIX scheduling system calls ( #1416 )
...
- Add sched_getparam syscall to retrieve process scheduling parameters
- Add sched_getscheduler syscall to get process scheduling policy
- Refactor sched_yield into separate module with proper syscall handler
- Add utility functions for scheduling permission checks
- Remove old do_sched_yield implementation from main syscall module
Signed-off-by: longjin <longjin@DragonOS.org>
2025-12-01 21:39:57 +08:00
aLinChe
cd45a996f4
fix(mkdir): 修复sys_mkdir逻辑错误和权限截断问题,并添加sys_umask ( #1419 )
...
* fix(sys_mkdir): fix ModeType and feat sys_umask
Signed-off-by: aLinChe <1129332011@qq.com>
* fix(sys_mknod): fix mknod
Signed-off-by: aLinChe <1129332011@qq.com>
* use ModeType to set_umask
Signed-off-by: aLinChe <1129332011@qq.com>
---------
Signed-off-by: aLinChe <1129332011@qq.com>
2025-12-01 21:34:49 +08:00
LoGin
147241e7cd
feat(procfs): Add support for /proc/thread-self/ns namespace files ( #1412 )
...
* feat(procfs): Add support for /proc/thread-self/ns namespace files
- Introduced a new module for handling namespace files under /proc/thread-self/ns, allowing applications to reference namespaces via symlinks.
- Implemented dynamic creation of namespace files and their corresponding IDs, ensuring compatibility with Linux behavior.
- Updated ProcFS to create necessary directory structures and files for thread-specific namespaces.
- Enhanced existing ProcFileType enum to include new types for thread self namespaces.
This addition improves the process namespace management and aligns with expected Linux functionality.
Signed-off-by: longjin <longjin@DragonOS.org>
* feat(namespace): Implement setns syscall for namespace management
- Added the `setns` syscall to allow processes to join existing namespaces using a file descriptor.
- Implemented kernel-level logic to handle namespace switching based on provided flags, supporting pidfd and namespace fd types.
- Enhanced the namespace management by integrating with the existing `NsProxy` structure, ensuring compatibility with Linux behavior.
- Updated related modules and added necessary error handling for invalid flags and file descriptors.
This addition improves the flexibility of namespace management in the kernel, aligning with expected Linux functionality.
Signed-off-by: longjin <longjin@DragonOS.org>
---------
Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-27 19:08:48 +08:00
Yuming Jiang
3f18af7c5a
fix(syscall/vfs): fix SIG derivative when writing partial readable buffer ( #1375 )
...
* fix(mm/vfs): 修复 writev 无法正确处理部分 iov 为受保护内存空间的情况
- 引入 user_accessible_len() 以测量从给定地址 `address` 开始,能够被拷贝的最长连续字节长度(注:使用vma进行校验)
- 使 IoVecs::gather 返回 Result 并仅聚合可以被读取的 `buf` 部分(注意,一旦碰到不可访问的 iov,后面的iov都会被抛弃)
- 在 writev/pwritev 中传播新的 Result 以支持 gVisor 下的部分写入
* docs(vfs/syscall): 添加文件系统实现分散写入的 TODO 注释
- 添加了对于 IoVecs 发起的分散写入的处理方式目前处理方式的注释。
- 添加了实现分散写入依赖于文件系统对于 IoVecs 写入支持的注释。
* feat(test): 添加 pwritev 性能测试程序
* fix(syscall/user_access): 修复 潜在的死锁问题
* test(gvisor): 在自动测试中启用所有的 writev 测试
Signed-Off-By: mingjiangyu1 <mingjiangyu1@qq.com>
2025-11-22 00:00:57 +08:00
LoGin
a7b30bcf1c
feat(process): 实现prctl系统调用支持PR_SET_PDEATHSIG和PR_SET_NAME选项 ( #1386 )
...
- 新增pdeath_signal字段到ProcessControlBlock,支持父进程退出信号设置
- 实现prctl系统调用,支持设置/获取进程名和父进程退出信号
- 在进程退出时向设置了pdeath_signal的子进程发送相应信号
- 添加prctl测试用例到gvisor测试白名单
Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-19 15:32:49 +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
40a3a3ec72
refactor(smp): 将smp模块的系统调用适配syscall table ( #1367 )
...
Signed-off-by: longjin <longjin@DragonOS.org>
2025-11-12 20:28:40 +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
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
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
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
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
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
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
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
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
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
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
3ab5403938
fix: 修复futex处理中的用户空间内存访问问题 ( #1259 )
...
在`futex.rs`中增加了`safe_read`、`safe_read_u32`和`safe_write_u32`方法,确保在访问用户空间内存时进行安全检查,避免无效地址导致的错误。同时,优化了`handle_futex_death`方法,使用新的安全读取和写入方法,确保在进程死亡时正确处理futex。
Signed-off-by: longjin <longjin@DragonOS.org>
2025-08-18 08:28:07 +08:00
kaleidoscope416
b1c4f459b2
refactor(vfs/syscall): 重构部分vfs下的系统调用 ( #1236 )
...
* refactor(vfs/syscall): 重构部分vfs下的系统调用
* refactor(vfs/syscall): 把 chdir 添加到调用表
* refactor(vfs/syscall): 把 fchdir 添加到调用表
* refactor(vfs/syscall): 把 getcwd 添加到调用表
* refactor(vfs/syscall): 把 getdents|gendents64 添加到调用表
* refactor(vfs/syscall): 把 lseek 添加到调用表
* refactor(vfs/syscall): 把 openat 添加到调用表
* refactor(vfs/syscall): 把 pread64 添加到调用表
* refactor(vfs/syscall): 把 pwrite64 添加到调用表
* refactor(vfs/syscall): 把 mkdir 添加到调用表
* refactor(vfs/syscall): 把 mkdirat 添加到调用表
* refactor(vfs/syscall): 把 link 添加到调用表
* refactor(vfs/syscall): 把 linkat 添加到调用表
* refactor(vfs/syscall): 把 unlinkat 添加到调用表
* refactor(vfs/syscall): 把 rename 添加到调用表
* refactor(vfs/syscall): 把 renameat 添加到调用表
* refactor(vfs/syscall): 把 renameat2 添加到调用表
* refactor(vfs/syscall): 把 rmdir 添加到调用表
* refactor(vfs/syscall): 把 unlink 添加到调用表
* 迁移sys_utimes系统调用
* 迁移futimesat和utimensat系统调用
* 迁移fchown
* 迁移fchownat
* refactor(vfs/syscall):迁移lchown
* refactor(vfs/syscall):迁移chown
* refactor(vfs/syscall):迁移fchmod
* refactor(vfs/syscall):迁移fchmodat
* refactor(vfs/syscall):迁移chmod
* refactor(vfs/syscall):迁移faccessat和faccessat2
* refactor(vfs/syscall):迁移access
* refactor(vfs/syscall):迁移readlink和readlinkat
* refactor(vfs/syscall):迁移dup,dup2,dup3,fcntl
* refactor(vfs/syscall):迁移ftruncate
* refactor(vfs/syscall):迁移mknod
* refactor(vfs/syscall):迁移newfstatat
* refactor(vfs/syscall):迁移statx
* refactor(vfs/syscall):迁移statfs
* refactor(vfs/syscall):迁移fstatfs
* refactor(vfs/syscall):迁移newfstat
* refactor(vfs/syscall):make fmt
* fix: 更新root_inode的获取
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
---------
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
Co-authored-by: dolzhuying <1240800466@qq.com>
Co-authored-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
2025-08-04 11:11:06 +08:00
LoGin
5038bf86d5
feat: implement namespace proxy and PID namespace support ( #1244 )
...
- Add nsproxy module for unified namespace management across process types
- Implement complete PID namespace isolation with process ID mapping and management
- Refactor credential system to use Arc<Cred> for improved performance and memory safety
- Unify namespace common field management to enhance code reusability
- Optimize PID namespace process lookup and management mechanisms
- Enhance TTY subsystem with improved terminal job control and virtual terminal management
- Improve signal handling system with namespace-level signal isolation
- Add sys_getpgrp system call and refine process group management
- Refactor signal processing modules across x86 and RISC-V architectures
2025-07-30 22:54:43 +08:00
LoGin
c8af029744
refactor(time): 将nanosleep系统调用适配新的syscall table ( #1233 )
...
Signed-off-by: longjin <longjin@DragonOS.org>
2025-07-12 22:54:40 +08:00
LoGin
cade251128
fix: 解决syscall_table处理结束后,忘记执行调度的bug ( #1234 )
...
同时,将sys_fork\sys_vfork调整为使用syscall table机制来实现
Signed-off-by: longjin <longjin@DragonOS.org>
2025-07-12 10:57:45 +08:00
LoGin
9156c83658
fix: 临时修复进程execve没恢复默认的sighandler的问题 ( #1232 )
...
* feat: 添加测试fork/wait功能的用户程序
1. 在kernel错误日志中添加当前进程ID信息
2. 新增test-fork-wait用户程序,包含Makefile、main.c和配置文件
3. 程序用于测试fork和wait系统调用功能
Signed-off-by: longjin <longjin@DragonOS.org>
* fix: 临时修复进程execve没恢复默认的sighandle的问题
Signed-off-by: longjin <longjin@DragonOS.org>
---------
Signed-off-by: longjin <longjin@DragonOS.org>
2025-07-10 23:45:24 +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
LoGin
f8f7bcf2a3
refactor: Remove namespace related code ( #1218 )
...
* 删除mnt namespace
* 移除Namespace代码
Signed-off-by: longjin <longjin@DragonOS.org>
* 删除Namespace相关文档
Signed-off-by: longjin <longjin@DragonOS.org>
---------
Signed-off-by: longjin <longjin@DragonOS.org>
2025-06-28 21:20:21 +08:00