Module keyctrl

Module keyctrl 

Source
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 🔒
KeyboardController
KeyboardDriver
we have a global controller, but we can’t use it as the “driver” because drivers should be stateless.
StatusReg 🔒

Enums§

Cmd 🔒
Msg 🔒
Prefix 🔒

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