Skip to content

Conversation

@fslongjin
Copy link
Member

  • 重构定时器创建逻辑,使用EpollTimeoutWaker结构体实现TimerFunction
  • 将超时唤醒方式从直接唤醒PCB改为通过Waker::wake()触发

通过这个PR, DragonOS可以正常的在busybox vi里面从编辑模式按下esc,退出到普通模式。

之前卡死的原因是,busybox vi的read_key()在读到 ESC(27) 后会用 poll(..., 50ms) 再读几个字节来判断是不是方向键序列;如果 DragonOS 的 poll/epoll_wait 超时不起作用,就会卡在“等后续字节”的状态里,表现为你按了 Esc 但无法进入普通模式、也就打不出 :wq

- 重构定时器创建逻辑,使用EpollTimeoutWaker结构体实现TimerFunction
- 将超时唤醒方式从直接唤醒PCB改为通过Waker::wake()触发

Signed-off-by: longjin <longjin@DragonOS.org>
@github-actions github-actions bot added the Bug fix A bug is fixed in this pull request label Dec 17, 2025
@fslongjin fslongjin merged commit 9289553 into DragonOS-Community:master Dec 18, 2025
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Bug fix A bug is fixed in this pull request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant