《操作系统设计与组织》第 3 版,第 351 页。键盘中断服务程序是 kbd_interrupt(第 15335 行),每当按下或释放键时都会调用。它调用 scode 从键盘控制器芯片获取扫描码。...所有原始扫描代码都放置在循环缓冲区中,并引发当前控制台的 tp->tty _events 标志(第 15350 行)。...并且 kbd_interrupt 在此之后立即返回。... 第 13795 行的 continue 语句导致主循环的新迭代立即在第 13764 行开始。当执行转移到循环顶部时,现在发现控制台设备的 tp->tty _events 标志为set 和 kb _read(第 15360 行),特定于设备的例程,使用控制台 tty 结构的 tp->tty _devread 字段中的指针调用。
我认为 ibuf 不能有多个扫描码。所以我认为一个 char 变量就足够了。为什么会存在圆形 ibuf?