Usenix Association 10th Usenix Symposium on Operating Systems Design and Implementation (osdi '12) 279 Symdrive: Testing Drivers without Devices
Usenix Association 10th Usenix Symposium on Operating Systems Design and Implementation (osdi '12) 279 Symdrive: Testing Drivers without Devices
复制标题
DOI:
--
复制
发表时间:
2012-10
期刊:
影响因子:
--
通讯作者:
Matthew J. Renzelmann;Asim Kadav;M. Swift
中科院分区:
文献类型:
--
作者:
Matthew J. Renzelmann;Asim Kadav;M. Swift
Device-driver development and testing is a complex and error-prone undertaking. For example, testing error-handling code requires simulating faulty inputs from the device. A single driver may support dozens of devices, and a developer may not have access to any of them. Consequently, many Linux driver patches include the comment "compile tested only." SymDrive is a system for testing Linux and FreeBSD drivers without their devices present. The system uses symbolic execution to remove the need for hardware, and extends past tools with three new features. First, SymDrive uses static-analysis and source-to-source transformation to greatly reduce the effort of testing a new driver. Second, SymDrive checkers are ordinary C code and execute in the kernel, where they have full access to kernel and driver state. Finally, SymDrive provides an execution-tracing tool to identify how a patch changes I/O to the device and to compare device-driver implementations. In applying SymDrive to 21 Linux drivers and 5 FreeBSD drivers, we found 39 bugs.