Skip to content

导引:三件事,同一个毛病

上一章把公共类型库 Cinux-Base 接了进来。这一章就拿它干三件越来越碍事的事——而且三件事其实是同一个毛病:同一种东西,内核里各写一份,还口径不一

环形缓冲,pipe 写一套、键盘驱动写一套,连"满了怎么判定"都不一样;内核日志,只有实时往屏幕吐的 kprintf,启动一过、屏幕一滚,之前发生了什么全没了;DMA,每个需要它的驱动自己 alloc_pages + 硬编码偏移 + 手动映射,出错没人管。这一章把它们分别收进统一的实现:环形缓冲归一、日志补上历史、DMA 做成设备无关的池。三件事串起来,就是"别重复造轮子,有公共的就消费公共的"。

接下来三节按这个顺序展开:先把两套手写环形缓冲合成一套顺带给内核日志配一段记忆,再把散在各驱动里的 DMA 收成一个设备无关的池——并诚实地记下 direct-map 上那个反直觉的坑。

035_multi_terminal-45-gf25de18 · f25de18 · 2026-08-04