Commit Graph

14 Commits

Author SHA1 Message Date
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 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 f2cca87d2b
refactor(wait_queue): 重构等待队列机制,引入Waiter/Waker模式 (#1452)
* refactor(wait_queue): 重构等待队列机制,引入Waiter/Waker模式

- 重构WaitQueue,引入Waiter/Waker模式避免唤醒丢失
- 统一等待接口,提供wait_event_interruptible/uninterruptible方法
- 重构futex、epoll、eventfd、semaphore、completion等模块使用新等待队列
- 优化进程等待子进程退出逻辑,使用新等待队列接口
- 添加等待队列设计文档说明新机制

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

* feat: 添加SKIP_GRUB选项以支持在CI或无图形界面环境中跳过GRUB安装

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

* fix: 修复信号处理和futex唤醒的错误码

- 在sys_rt_sigtimedwait中消费信号后及时刷新HAS_PENDING_SIGNAL状态,避免后续等待路
径误判
- 将futex可中断唤醒的错误码从ERESTARTSYS改为EINTR,以符合Linux语义

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

* ci: Update Docker image source in test-x86 workflow

- Changed the Docker image source from `docker.cnb.cool/dragonos-community/dragonos/dragonos-dev:v1.19` to `dragonos/dragonos-dev:v1.19` for consistency in CI workflows.

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

---------

Signed-off-by: longjin <longjin@DragonOS.org>
2025-12-10 14:04:05 +08:00
LIU Yuwei 57b20d2326
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
2024-12-16 01:48:46 +08:00
GnoCiYeH b941261d94
docs(sched):调度子系统文档即cfs文档 (#807)
* 调度子系统文档以及cfs文档
2024-05-07 22:01:01 +08:00
Bullet 49249f4ec9
把调度器实例的裸指针改为Option (#262) 2023-05-13 09:55:24 +08:00
houmkh 8fd71f2772
增加定时器和软中断文档,修改了softirq面向c的接口 (#245)
* 增加定时器和软中断文档

* 修改softirq对c的接口和文档

* 修改文档格式
2023-04-17 17:17:06 +08:00
kong 90b077f9d3
Sched rt doc (#163)
* update

* 完善调度器文档

* 更新RT调度器文档

* 更新实时调度文档
2023-02-09 15:24:37 +08:00
login 151251b50b
Patch add rust waitqueue (#162)
* new: rust版本的waitqueue

* new:等待队列的文档
2023-01-31 19:27:02 +08:00
login cffd7144fb
signal相关数据结构&代码结构优化 (#84)
* 解决由于spinlock.h中包含preempt_enable()带来的循环include问题

* new: 初步实现signal的数据结构
2022-11-16 15:18:03 +08:00
login fd8ba5749d
about APP: adjust copyright info (#76)
* 修正文档错误

* buffix: 在释放kthread struct之前,先判断是否为kthread

* 修改about应用中的版权声明
2022-11-04 15:05:33 +08:00
guanjinquan 09f8d6f577
添加completion模块+wait_queue_head模块+schedule_timeout (#70)
* 添加completion模块+wait_queue_head模块+schedule_timeout

* 修复一些bug

* 实现设置pcb名字和vsnprintf (#72)

* 实现pcb设置名字

* 实现设置pcb名字,实现vsnprintf

* 修改set_pcb_name和va_end

* bugfix: 修正一些小问题

Co-authored-by: longjin <longjin@RinGoTek.cn>

* new: FAT32删除文件的功能 (#73)

* new: 将sys_rmdir更改为sys_unlink,.且完成删除文件操作的vfs部分

* new: fat32删除文件

*bugfix: 解决创建文件时的bug

* new: 将可执行文件移动到bin目录下

* 完善completion和wait_queue_head文档,并确保测试ok。

Co-authored-by: longjin <longjin@RinGoTek.cn>
Co-authored-by: houmkh <100781004+houmkh@users.noreply.github.com>
2022-11-03 21:54:59 +08:00
fslongjin 8bc8890070 doc: wait_queue文档 2022-08-30 23:51:32 +08:00