Julia LAWALL (Inria/LIP6-Whisper)
Understanding Linux Network Device Driver Code
A device driver forms the interface between the operating system and a specific device. While the operating system, running on a CPU, has a global view of machines resources, the device, due to possible limitations on its capabilities and to security constraints, has a specific and limited view. This different view of system resources leads to complex communication protocols. To address performance issues and evolutions in device design, these protocols have furthermore changed over time. We illustrate these issues in the context of network device drivers via examples, and consider how program manipulation techniques can be used to help in getting a global understanding of the code.