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 |