火花
d7eecdfd08
feat(sysfs): sysfs 支持挂载 ( #1667 )
...
* feat(sysfs): sysfs支持挂载
实现 FileSystem 和 MountableFileSystem trait,使 sysfs 成为可挂载文件系统。
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* feat(qemu): 将虚拟机内存调整至2G,避免OOM
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
---------
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
2026-01-15 13:22:58 +08:00
火花
e7add27923
feat(procfs): procfs支持挂载 ( #1639 )
...
* feat: procfs支持挂载
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* fix: 增加错误处理
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
---------
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
2026-01-14 23:56:18 +08:00
LoGin
39c95d5792
fix(mm): clamp file page writeback length to one page ( #1662 )
...
* fix(mm): clamp file page writeback length to one page
PageReclaimer::page_writeback computed len as file_size - page_start, which
could exceed PAGE_SIZE and cause writeback to read beyond the page buffer and
rewrite large trailing ranges repeatedly.
Clamp len to at most PAGE_SIZE, handle pages past EOF, and avoid panic on I/O
errors by setting PG_ERROR and keeping PG_DIRTY for retry.
Signed-off-by: longjin <longjin@DragonOS.org>
* fix(mm/page): 修复脏页回写后仍被标记为脏页时的处理逻辑
- 在脏页回写后检查页面是否仍被标记为脏页
- 若仍为脏页,则重新插入页面到回收器队列中,避免错误删除
Signed-off-by: longjin <longjin@DragonOS.org>
---------
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-14 23:25:50 +08:00
LoGin
a3cbe901c4
feat(block): 新增异步BIO框架并集成到virtio-blk驱动 ( #1659 )
...
* feat(block): 新增异步BIO框架并集成到virtio-blk驱动
- 新增BIO请求结构体(BioRequest)和FIFO队列(BioQueue),支持异步读写操作
- 在BlockDevice
trait中增加submit_bio、submit_bio_read、submit_bio_write方法,提供异步接口和同步
回退机制
- 重构virtio-blk驱动,使用异步BIO框架替代原有的同步读写,提升IO性能
- 新增IO线程处理BIO请求,支持批量处理和budget控制,避免CPU独占
- 使用tasklet处理中断下半部,完成BIO请求的异步回调
- 将BlockDevManager和BlockDevMeta中的SpinLock替换为Mutex,改善锁机制
Signed-off-by: longjin <longjin@DragonOS.org>
* refactor(kernel): 将FutexData的锁类型从SpinLock替换为Mutex,并调整进程退出时调度实体停用的顺序
- 将FutexData结构体及其方法中的SpinLock和SpinLockGuard替换为Mutex和MutexGuard
- 在进程退出流程中,将调度实体deactivate操作移至清理用户态资源之后,以避免潜在的
用户态缺页异常
Signed-off-by: longjin <longjin@DragonOS.org>
* fix: 修复进程退出的时候,持自旋锁访问用户内存触发磁盘读取,导致panic的问题
Signed-off-by: longjin <longjin@DragonOS.org>
---------
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-14 22:50:30 +08:00
LoGin
7272045ca9
fix(net): start iface id at 1 to match Linux ifindex semantics ( #1658 )
...
Linux ifindex must be non-zero. Make generate_iface_id() start from 1
so loopback and other devices never get ifindex 0, fixing raw socket
tests relying on if_nametoindex("lo") returning a valid index.
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-14 18:20:04 +08:00
LoGin
4d7478c3fb
refactor(futex): 重构优先级继承 futex 实现 ( #1656 )
...
- 在 FutexHashBucket 中添加 PI 相关字段(pi_owner、pi_waiters)并重构初始化逻辑
- 为 FutexObj 添加 tid 字段以支持 PI 功能
- 重构 pi_futex.rs 中的锁获取、释放和尝试获取逻辑,优化竞争条件处理
- 新增 handle_pi_futex_death 方法处理 PI futex 的 owner death 场景
- 在 robust list 处理中优先尝试处理 PI futex
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-14 14:59:23 +08:00
LoGin
eda2e5d964
fix(process): refine process exit state management and signal handling ( #1657 )
...
* fix(process): refine process exit state management and signal handling
- Add exit state tracking (Running/Zombie/Dead) to prevent signal delivery to
dead processes
- Ensure proper state transitions during process exit and wait operations
- Fix race conditions in wait() by using atomic exit state checks
- Improve process cleanup by marking processes as exiting before notifying
parent
Signed-off-by: longjin <longjin@DragonOS.org>
* fmt
---------
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-14 14:41:17 +08:00
LoGin
b8adc89b84
fix(rwsem): 修复读写信号量升级过程中的唤醒和状态管理问题 ( #1654 )
...
- 在写锁降级为可升级读锁时,唤醒所有等待的读操作
- 在可升级读锁升级为写锁时,显式释放可升级读锁以清除状态位
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-14 13:48:31 +08:00
LoGin
8463318499
refactor(mm): 将页面锁从读写锁替换为读写信号量 ( #1653 )
...
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-14 11:59:28 +08:00
LoGin
695d3928b0
refactor(filesystem): 将SpinLock替换为Mutex,RwLock替换为RwSem ( #1652 )
...
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-14 09:56:54 +08:00
LoGin
bcfebe3889
refactor(net): 将网络模块中的RwLock替换为RwSem,SpinLock替换为Mutex ( #1651 )
...
* refactor(net): 将网络模块中的RwLock替换为RwSem,SpinLock替换为Mutex
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-14 01:03:12 +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
火花
e5e196d5f4
fix: 修复sys-open对于O_PATH参数的处理,避免触发 FIFO 的阻塞等待 ( #1640 )
...
* fix: 修复sys-open对于O_PATH参数的处理,避免触发 FIFO 的阻塞等待
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
* fix: 补充sys-close对于O_PATH的处理逻辑
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
---------
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
2026-01-13 23:20:17 +08:00
LoGin
1559242256
fix(process): 修复进程PID命名空间处理逻辑 ( #1635 )
...
- 在fork时使用task_pid_nr_ns获取子进程在父命名空间中的虚拟PID
- 修复进程退出时从父进程children列表中移除的逻辑
- 修复进程收养逻辑中的PID命名空间处理
- 添加相关警告日志
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-13 21:59:16 +08:00
火花
62f2a13828
fix: 修复tmpfs挂载参数的解析问题 ( #1641 )
...
Signed-off-by: sparkzky <sparkhhhhhhhhhh@outlook.com>
2026-01-13 20:59:20 +08:00
LoGin
3fc8866dd5
refactor(kernel): 重构 Mutex 和 WaitQueue 实现,使用状态机避免唤醒丢失 ( #1643 )
...
- 将 Mutex 内部实现从 SpinLock+LinkedList 改为 AtomicBool+WaitQueue
- 重构 WaitQueue 的 Waker
机制,使用四态状态机(Idle/Sleeping/Notified/Closed)替代 AtomicBool
- 引入 Waiter/Waker 握手机制,通过 prepare_sleep() 和 consume_notification()
避免竞态条件
- 在 Mutex::lock() 中直接使用 wait_queue.wait_until(),简化加锁逻辑
- 修复监控脚本中的权限问题,将 kill 命令改为 sudo kill
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-13 20:50:15 +08:00
LoGin
7d2a6f7e44
refactor: 重构 RwSem 和 WaitQueue 实现,解决并发冲突问题 ( #1637 )
...
- 重构 RwSem 状态表示,使用 64 位原子整数和位域编码
- 新增可升级读锁支持,提供原子升级/降级功能
- 重构 WaitQueue 核心机制,以 wait_until 为基础 API 消除唤醒丢失
- 统一等待队列设计,使用单一队列管理所有等待者
- 优化锁获取性能,实现快速路径和慢速路径分离
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-13 14:30:35 +08:00
LoGin
5d0cbdcff5
feat(vfs): 实现splice和tee系统调用 ( #1621 )
...
* feat(vfs): 实现splice和tee系统调用
- 新增splice系统调用,支持管道与文件间的零拷贝数据传输
- 新增tee系统调用,实现管道间数据复制而不消耗源数据
- 为File结构体添加pos()和advance_pos()方法用于文件偏移管理
- 在pipe模块中实现splice_to_pipe()和tee_to()等核心操作
- 添加send_kernel_signal_to_current()辅助函数简化内核信号发送
- 更新测试白名单以包含splice相关测试
Signed-off-by: longjin <longjin@DragonOS.org>
* feat(ipc/pipe): 重构splice和tee实现,添加copy_from_other和transfer_chunk辅助函数
Signed-off-by: longjin <longjin@DragonOS.org>
* fix(pipe): 修复管道读写时的信号发送与零拷贝处理逻辑
- 在管道写入时,若没有读取者,发送 SIGPIPE 信号并返回 EPIPE 错误
- 修复读取逻辑中零拷贝时的循环处理,避免因快照过期导致的无限循环
Signed-off-by: longjin <longjin@DragonOS.org>
* 1
* fix(pipe): 修复splice系统调用中管道数据竞争问题
- 为管道添加splice_hold字段,防止并发读取导致数据丢失
- 修改splice_pipe_to_file函数,使用peek+hold模式读取管道数据
- 修复sys_splice和sys_tee中的文件权限检查
- 优化管道可读性判断逻辑,正确处理splice_hold状态
Signed-off-by: longjin <longjin@DragonOS.org>
* fix(splice): refine O_NONBLOCK handling for pipe endpoints
- Update logic to inherit O_NONBLOCK flag only from pipe endpoints, ensuring correct splice behavior for regular files.
- Clarify comments to reflect the changes in handling non-blocking flags.
Signed-off-by: longjin <longjin@DragonOS.org>
* refactor(filesystem): 移除冗余的 nonblock_prep_pipe_write 函数并优化 splice
非阻塞逻辑
- 删除`nonblock_prep_pipe_write`函数,将非阻塞检查逻辑内联至
`splice_file_to_pipe`函数中
- 优化文件到管道 splice 的非阻塞语义,使其更符合 Linux 行为
- 修复管道 epoll 事件检查逻辑,避免在 splice 持有锁时误报可读事件
Signed-off-by: longjin <longjin@DragonOS.org>
* 1
---------
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-12 15:14:29 +08:00
LoGin
8c2eb8a7c8
feat(procfs): 新增/proc/stat文件支持 ( #1636 )
...
- 添加stat模块实现/proc/stat文件,显示系统统计信息
- 在procfs根目录注册stat文件节点
- 扩展PidNamespace以支持统计进程创建数量和收集PID列表
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-12 13:14:49 +08:00
LoGin
75be344985
feat(net/tcp): 实现TCP_CORK、TCP_QUICKACK、SO_KEEPALIVE选项及SHUT_RD半关闭支持 ( #1629 )
...
* feat(net/tcp): 实现TCP_CORK、TCP_QUICKACK、SO_KEEPALIVE选项及SHUT_RD半关闭支持
- 新增TCP_CORK选项,支持数据缓冲与手动刷新
- 新增TCP_QUICKACK和SO_KEEPALIVE选项支持
- 完善SHUT_RD半关闭语义,支持读取剩余数据后返回EOF
2026-01-12 12:17:02 +08:00
Yuming Jiang
74649e00b1
fix(time/clocksource):修复 ClocksourceWatchdog 拼写错误 ( #1628 )
2026-01-11 18:35:59 +08:00
LoGin
13df67a5c0
docs: 添加Tasklet文档并扩展其数据传递能力 ( #1624 )
...
- 在文档目录中添加Tasklet的详细说明文档
- 扩展Tasklet回调以支持复杂数据类型的传递
- 更新TTY驱动以适配新的Tasklet接口
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-09 14:33:23 +08:00
LoGin
c875dac003
feat(net): 新增TCP_INFO支持并优化网络接口选择逻辑 ( #1623 )
...
* feat(net): 新增TCP_INFO支持并优化网络接口选择逻辑
- 新增TCP_INFO socket选项实现,提供详细的TCP连接状态信息
- 优化IPv4映射IPv6地址的处理逻辑
- 重构未指定地址绑定的网络接口选择算法
- 修复getsockopt缓冲区处理边界条件
- 更新smoltcp依赖版本至5a73cad
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-09 10:44:21 +08:00
LoGin
510ad1be82
feat(elf): 实现只读段文件映射与BSS处理优化 ( #1616 )
...
- 为只读ELF段(PF_W=0)添加文件映射支持,通过pagecache实现按需加载
- 重构BSS处理逻辑,避免死锁并遵循Linux padzero语义
- 新增file_mapping_with_file接口,优化文件映射参数传递
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-07 23:34:33 +08:00
LoGin
0ee965c8e9
feat(net): 重构网络子系统,引入NAPI机制与TCP socket改进 ( #1599 )
...
- 新增NAPI(New API)子系统,实现有界轮询机制,提升网络包处理性能
- 重构e1000e驱动,集成NAPI中断处理,移除旧的中断处理模块
- 改进TCP socket实现,支持self-connect、延迟关闭、backlog管理等Linux兼容特性
- 优化网络命名空间轮询线程,采用事件驱动与定时器混合模型
- 新增TCP listener backlog和TCP close defer机制,提升协议栈兼容性
- 修复epoll事件通知机制,避免竞态条件和唤醒丢失
- 升级smoltcp依赖,启用TCP Reno和Cubic拥塞控制算法
- 新增网络子系统设计文档,详细说明NAPI与NetNamespace Poll机制
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-07 22:50:48 +08:00
LoGin
74478d610b
refactor: 提取sched_yield函数 ( #1615 )
...
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-06 21:30:56 +08:00
LoGin
343a2c553f
fix: rv64 build ( #1614 )
...
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-06 20:19:13 +08:00
LoGin
7cd673d43e
refactor: 将 SpinLockGuard 替换为 MutexGuard ( #1613 )
...
- 在多个文件系统的 IndexNode 实现中,将 SpinLockGuard<FilePrivateData> 替换为
MutexGuard<FilePrivateData>
- 更新了 epoll 模块中的锁类型,将 SpinLock 替换为
Mutex,并调整了相关锁的使用方式
- 修改了网络模块中 EPollItems 的锁类型,将 SpinLock 替换为 Mutex
- 调整了文件系统、驱动、IPC 等模块中相关代码的锁使用方式
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-06 20:13:02 +08:00
LoGin
f5eb00b0d0
feat(exec): 重构execve系统调用,引入do_open_execat函数统一打开可执行文件 ( #1612 )
...
- 新增do_open_execat函数,复用do_sys_openat2的路径解析和权限检查逻辑,专门用于打
开可执行文件
- 修改execve、execveat系统调用,不再直接操作inode,而是通过do_open_execat打开文件
- 重构ElfLoader和Shebang处理逻辑,使用File对象替代inode,简化权限检查和文件操作
- 移除冗余的VFS_MAX_FOLLOW_SYMLINK_TIMES导入和手动路径解析代码
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-06 01:36:31 +08:00
LoGin
be37d65322
feat(kernel): 新增工作队列机制 ( #1609 )
...
- 新增工作队列(Workqueue)机制,支持在进程上下文中延迟执行任务
- 添加中断与下半部文档目录及工作队列设计文档
- 集成工作队列初始化到内核启动流程
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-06 00:07:22 +08:00
LoGin
82e11793fc
feat(tty): 引入中断下半部机制并重构TTY输入处理 ( #1607 )
...
- 新增bottom_half模块,实现local_bh_disable/enable和lock_bh语义
- 新增tasklet模块,提供基于softirq的bottom-half机制
- 重构TTY输入处理:将send_to_tty_refresh_thread改为enqueue_tty_rx_from_irq,在硬
中断中只入队并调度tasklet
- 为spinlock和rwlock添加*_bh接口,支持在持锁时屏蔽softirq/tasklet
- 修改softirq执行逻辑,在BH禁用时跳过执行以避免死锁
- 更新初始化流程,统一初始化bottom-half子系统
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-05 22:50:01 +08:00
LoGin
d80a2321e6
feat(sched): 新增FIFO调度器实现及演示功能 ( #1606 )
...
- 新增FIFO调度器核心实现(fifo.rs),包含优先级队列管理和调度逻辑
- 在CFS调度器中添加set_next_task方法以支持FIFO切换
- 重构CFS调度器的pick_next_task算法,优化任务选择逻辑
- 在进程管理器中添加set_fifo_policy方法,支持内核线程设置FIFO策略
- 新增FIFO演示模块(fifo_demo.rs),展示FIFO调度器使用方式
- 在系统初始化时可选加载FIFO演示功能(通过fifo_demo特性控制)
- 更新调度器模块集成FIFO调度器,完善调度策略切换逻辑
- 修改sched_yield系统调用以支持FIFO调度器的yield操作
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-05 20:00:24 +08:00
LoGin
a6927d4e51
chore: 为sys_time模块添加x86_64架构条件编译 ( #1605 )
...
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-05 00:18:24 +08:00
LoGin
0878add0c3
feat(time): 新增 sys_time 系统调用 ( #1601 )
...
- 实现 time() 系统调用,返回自纪元以来的秒数
- 支持将时间值写入用户空间指针 tloc
- 使用与 gettimeofday 相同的时间源
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-04 21:17: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
kado
c9d123261a
fix(mm): 修复 msync 系统调用以通过 gvisor 测试用例 ( #1583 )
...
* 将原先 直接在内核根据用户地址构造slice再使用write同步 修改为 调用sync同步
Signed-off-by: kaleidoscope416 <jiangruizhi@DragonOS.org>
2026-01-01 15:43:55 +08:00
LoGin
f6eeef4f74
feat(libs): 新增可睡眠读写信号量RwSem ( #1589 )
...
- 新增RwSem读写信号量实现,支持进程上下文阻塞获取锁
- 提供读/写锁的阻塞/非阻塞获取接口,支持可中断等待
- 实现写锁降级功能,支持原子降级为读锁
- 采用写者优先策略,防止写者饥饿
- 更新多个驱动模块,将RwLock替换为RwSem以支持睡眠等待
- 新增设计文档rwsem.md说明实现细节
Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-01 15:39:56 +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
aa1c1d1774
Revert "fix(lookup_kallsyms): 修复符号表查询问题 ( #1443 )" ( #1584 )
...
This reverts commit 23ab2f3658 .
2025-12-31 22:35:51 +08:00
LoGin
3a5cf980a9
fix(net): 修复 raw socket 发送到非 loopback 地址时未正确选择出口网卡的问题 ( #1582 )
...
- 新增 ensure_not_loopback_wildcard_for_send 方法,在发送前检查并切换绑定
- 在 send_to 和 sendmsg 中调用该方法,确保非 loopback 目的地址使用正确的出口网卡
- 更新 DNS 服务器配置为国内常用地址
Signed-off-by: longjin <longjin@DragonOS.org>
2025-12-30 22:04:19 +08:00
LoGin
b1275e800a
feat(procfs): 新增/proc/net目录支持ARP缓存和协议列表查看 ( #1581 )
...
- 新增/proc/net/arp文件,显示ARP缓存表信息
- 新增/proc/net/protocols文件,显示支持的socket协议信息
- 新增neighbor模块提供ARP条目查询API
- 新增uapi/arp模块定义ARP硬件类型和标志位
- 更新smoltcp依赖以支持medium-ethernet特性
- 调整Unix流套接字缓冲区大小上限
Signed-off-by: longjin <longjin@DragonOS.org>
2025-12-30 19:12:36 +08:00
LoGin
3ac1432288
feat(net): 重构 raw socket 并添加超时等待支持 ( #1579 )
...
- 重构 raw socket
模块,将大型文件拆分为多个子模块(loopback、ops、options、packet、recv、send、so
cket、sockopt)
- 在 wait_queue 中添加带超时的等待函数(wait_event_interruptible_timeout 和
wait_event_interruptible_timeout_with)
- 为 raw socket 添加 ICMP/ICMPv6 Echo 自动回复功能
- 为 Unix 域套接字(datagram 和 stream)使用新的超时等待函数
- 修复 getsockopt 系统调用中 optval 为 null 时的处理逻辑
- 添加 ICMPv6 过滤器支持
- 改进 raw socket 的 IP_HDRINCL 发送处理
Signed-off-by: longjin <longjin@DragonOS.org>
2025-12-30 13:25:16 +08:00
LoGin
e8fc8b3af9
ci: 添加rust-slabmalloc的主机测试工作流和属性测试 ( #1577 )
...
- 新增GitHub Actions工作流,用于在主机上构建并运行slab_stress压力测试
- 添加proptest依赖,实现随机分配/释放序列的属性测试
- 新增slab_stress二进制工具,支持Valgrind内存检查
- 完善测试文档,说明主机测试的使用方法
- 修复页面状态迁移测试,确保Full/Partial/Empty列表转换正确
Signed-off-by: longjin <longjin@DragonOS.org>
2025-12-30 08:37:47 +08:00
LoGin
b445c2f5b9
feat(net): 实现 raw socket 和 packet socket 支持 ( #1575 )
...
- 新增 AF_INET/AF_INET6 SOCK_RAW 实现,支持 IPv4/IPv6 raw socket
- 新增 AF_PACKET socket 实现,支持链路层数据包捕获和发送
- 实现 raw socket 的 IP_HDRINCL、ICMP_FILTER、IPV6_CHECKSUM 等选项
- 为网络驱动添加 packet socket 分发支持(e1000e、virtio_net、veth、loopback)
- 完善 socket 系统调用对 raw/packet socket 的支持
- 修复代码规范问题(函数内 use 语句、magic number 常量化)
- 优化并发安全、代码重复和模块结构
Signed-off-by: longjin <longjin@DragonOS.org>
2025-12-30 08:34:35 +08:00
LoGin
9411a468c5
refactor(slabmalloc): 优化页面状态管理并移除周期性重平衡 ( #1576 )
...
- 解决 #1466 的性能下降问题
- 引入 PageState 枚举和页面状态跟踪方法
- 在分配和释放时直接维护页面列表,移除 check_page_assignments 周期性重平衡
- 更新元数据开销常量并调整相关测试
Signed-off-by: longjin <longjin@DragonOS.org>
2025-12-30 08:29:30 +08:00
LoGin
62ae87ca3d
feat(signal): 实现进程级信号与线程级信号的分离处理 ( #1574 )
...
- 在信号发送路径中区分进程级信号(TGID/PGID/SID)与线程级信号(PID),分别存储到
shared_pending 和线程私有 pending
- 修改 kill、rt_sigqueueinfo 等系统调用使用进程级信号,tgkill 使用线程级信号
- 为 POSIX timer 添加线程定向信号支持,SIGEV_THREAD_ID 使用线程级信号
- 修复 signalfd 读操作中可能因持有锁而导致的死锁问题
- 更新信号检查逻辑,同时检查线程级 pending 和进程级 shared_pending
Signed-off-by: longjin <longjin@DragonOS.org>
2025-12-30 00:53:36 +08:00
LoGin
a6b54d19c4
feat(syscall): 新增并重构UID/GID相关系统调用 ( #1572 )
...
- 新增id_utils模块,提供setuid/setgid相关系统调用的通用辅助函数
- 新增setreuid、setregid、getresuid、getresgid系统调用实现
- 重构setuid、setgid、setresuid、setresgid、sys_groups系统调用,使用统一的辅助函数
- 完善权限检查逻辑,遵循Linux语义处理-1参数和capability更新
- 在sys_groups中增加CAP_SETGID权限检查
- 更新测试白名单,添加uidgid_test
Signed-off-by: longjin <longjin@DragonOS.org>
2025-12-30 00:13:15 +08:00