Drivers do more than just I/O - 15% perform data processing. Only 23% of code is for I/O and interrupts, with 36% for initialization and cleanup. 44% of drivers do not conform to class definitions due to unique parameters, ioctls, and interactions. There are opportunities to improve abstractions, as at least 8% of code is similar across drivers. Better abstractions could reduce code size and bugs.