Skip to content

Commit f2cca87

Browse files
authored
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 <[email protected]> * feat: 添加SKIP_GRUB选项以支持在CI或无图形界面环境中跳过GRUB安装 Signed-off-by: longjin <[email protected]> * fix: 修复信号处理和futex唤醒的错误码 - 在sys_rt_sigtimedwait中消费信号后及时刷新HAS_PENDING_SIGNAL状态,避免后续等待路 径误判 - 将futex可中断唤醒的错误码从ERESTARTSYS改为EINTR,以符合Linux语义 Signed-off-by: longjin <[email protected]> * 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 <[email protected]> --------- Signed-off-by: longjin <[email protected]>
1 parent d044801 commit f2cca87

File tree

28 files changed

+1141
-1165
lines changed

28 files changed

+1141
-1165
lines changed

.github/workflows/test-x86.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
runs-on: ubuntu-latest
2020
timeout-minutes: 60
2121
container:
22-
image: docker.cnb.cool/dragonos-community/dragonos/dragonos-dev:v1.19
22+
image: dragonos/dragonos-dev:v1.19
2323
options: --privileged -v /dev:/dev
2424
steps:
2525
- name: Checkout DragonOS code

Makefile

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,21 @@ endif
2828
# 解析命令行参数
2929
FMT_CHECK?=0
3030

31+
# 是否跳过grub自动安装。CI环境或纯nographic运行可以设置为1以节省时间。
32+
SKIP_GRUB ?= 0
33+
# CI环境默认跳过
34+
ifneq ($(CI),)
35+
SKIP_GRUB := 1
36+
endif
37+
38+
ifeq ($(SKIP_GRUB),1)
39+
GRUB_PREPARE_CMD := printf 'Skip grub_auto_install.sh (SKIP_GRUB=1)\n'
40+
GRUB_SKIP_ENV := SKIP_GRUB=1
41+
else
42+
GRUB_PREPARE_CMD := bash grub_auto_install.sh
43+
GRUB_SKIP_ENV :=
44+
endif
45+
3146
ifeq ($(FMT_CHECK), 1)
3247
FMT_CHECK=--check
3348
else
@@ -83,11 +98,11 @@ endif
8398
# 写入磁盘镜像
8499
write_diskimage: check_arch
85100
@echo "write_diskimage arch=$(ARCH)"
86-
bash -c "export ARCH=$(ARCH); cd tools && bash grub_auto_install.sh && sudo DADK=$(DADK) ARCH=$(ARCH) bash $(ROOT_PATH)/tools/write_disk_image.sh --bios=legacy && cd .."
101+
bash -c "export ARCH=$(ARCH); cd tools && $(GRUB_PREPARE_CMD) && sudo DADK=$(DADK) $(GRUB_SKIP_ENV) ARCH=$(ARCH) bash $(ROOT_PATH)/tools/write_disk_image.sh --bios=legacy && cd .."
87102

88103
# 写入磁盘镜像(uefi)
89104
write_diskimage-uefi: check_arch
90-
bash -c "export ARCH=$(ARCH); cd tools && bash grub_auto_install.sh && sudo DADK=$(DADK) ARCH=$(ARCH) bash $(ROOT_PATH)/tools/write_disk_image.sh --bios=uefi && cd .."
105+
bash -c "export ARCH=$(ARCH); cd tools && $(GRUB_PREPARE_CMD) && sudo DADK=$(DADK) $(GRUB_SKIP_ENV) ARCH=$(ARCH) bash $(ROOT_PATH)/tools/write_disk_image.sh --bios=uefi && cd .."
91106
# 不编译,直接启动QEMU
92107
qemu: check_arch
93108
sh -c "cd tools && bash run-qemu.sh --bios=legacy --display=window && cd .."
@@ -143,7 +158,7 @@ run-vnc: check_arch
143158

144159
run-nographic: check_arch
145160
$(MAKE) all -j $(NPROCS)
146-
$(MAKE) write_diskimage || exit 1
161+
SKIP_GRUB=1 $(MAKE) write_diskimage || exit 1
147162
$(MAKE) qemu-nographic
148163

149164
# 在docker中编译,并启动QEMU
@@ -161,7 +176,7 @@ test-syscall: check_arch
161176
echo "磁盘节省模式启用,正在清理用户程序构建缓存..."; \
162177
$(DADK) user clean --level in-src; \
163178
fi
164-
$(MAKE) write_diskimage || exit 1
179+
SKIP_GRUB=1 $(MAKE) write_diskimage || exit 1
165180
$(MAKE) qemu-nographic AUTO_TEST=syscall SYSCALL_TEST_DIR=/opt/tests/gvisor &
166181
sleep 5
167182
@{ \

docs/kernel/sched/c_waiting.md

Lines changed: 0 additions & 202 deletions
This file was deleted.

docs/kernel/sched/index.rst

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,8 @@ DragonOS调度
77
.. toctree::
88
:maxdepth: 1
99

10-
c_waiting
11-
rust_waiting
1210
core
1311
cfs
1412
rt
1513
kernel_timer
14+
wait_queue

docs/kernel/sched/rust_waiting.md

Lines changed: 0 additions & 81 deletions
This file was deleted.

0 commit comments

Comments
 (0)