Device Drivers
top-half
- API (open, close, read, write, ioctl)
- I/O Control (IOCTL, device specific arguments)
bottom-half
- interrupt handler
- communicates with device
- resumes process
Must have access to user address space and device control registers => runs in kernel mode.