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
|
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 |
曾俊
|
2eab6dd743
|
feat(log): 将内核日志统一为新的logger (#814)
|
2024-05-16 17:25:23 +08:00 |
GnoCiYeH
|
e3b898316b
|
增加ChangeLog V0.1.9,更改about.c版本 (#600)
|
2024-03-13 22:36:31 +08:00 |
LoGin
|
c3dc6f2ff9
|
删除一些过时的C代码 (#565)
* 删除C版本的crc库
* 删除lockref
* 删除过时的libc文档以及wait.c
* 删除过时的C版本kfifo代码及文档
* 移除未用到的lz4库
* 删除内核的stdlib.c
* 删除fabs.c
* fmt
* 使得put_string系统调用能够通过tty输出颜色
暂且这样改,这一部分应该是用户层面提供的功能,后续删除
---------
Co-authored-by: GnoCiYeH <heyicong@dragonos.org>
|
2024-03-08 23:22:48 +08:00 |
Mork
|
676b8ef62e
|
部分函数从返回值为Result<<>,i32>修改为Result<<>,SystemError> (#210)
* 将Result<<>,i32>替换为Result<<>,SystemError>
* bugfix: 显示双缓冲区初始化的时候,连续注册了两次Video Softirq的问题。
Co-authored-by: longjin <longjin@RinGoTek.cn>
|
2023-03-29 21:24:11 +08:00 |
Gou Ngai
|
c1396d2771
|
Rwlock文档 (#186)
* Rwlock文档
|
2023-03-06 11:28:32 +08:00 |
login
|
935f40ec17
|
new: Rust版本的Mutex (#157)
|
2023-01-17 21:30:16 +08:00 |
login
|
ec53d23ed0
|
new: 新增具有守卫的自旋锁SpinLock,支持编译期对锁的使用进行检查。 (#148)
|
2023-01-14 10:35:49 +08:00 |
login
|
61de2cdc3f
|
新增rust版本的lockref (#135)
* new:Rust封装cpu_relax(),通过pause指令,让cpu休息一会儿。降低空转功耗
* new: Rust版本的lockref
* Rust的RawSpinlock新增is_locked()和set_value()方法。
* lockref文档
|
2023-01-03 23:09:25 +08:00 |
fslongjin
|
112775fd6b
|
doc: lockref介绍文档
|
2022-10-06 21:44:19 +08:00 |
fslongjin
|
311a6181b5
|
doc: mutex文档
|
2022-07-31 17:27:43 +08:00 |
fslongjin
|
6352836902
|
doc: 锁机制的文档
|
2022-07-27 11:17:11 +08:00 |