Expand description
Driver for the PS/2 keybard/mouse controller
beyound OOStuBS:
The ‘gather’ field should NEVER have imcomplete state: it should either be a valid key, or nothing. TODO what if IO ops fails or timeout? TODO figure out how to abstract the “interrupt control” layer. Keyboard controller should not be arch dependent
Structs§
- Defs 🔒
- KeyState 🔒
- Keyboard
Controller - Keyboard
Driver - we have a global controller, but we can’t use it as the “driver” because drivers should be stateless.
- Status
Reg 🔒
Enums§
Statics§
- KBCTL_
GLOBAL - this is the global keybard controller. It can only be used in prologue level,
except for the
gather
field (consume_key is safe), which is atomic that can be safely used. (TODO maybe we can change this L3/L2 shared state abstraction) - KEY_
BUFFER