The Flux OSKit: a substrate for kernel and language research
Proceedings of the sixteenth ACM symposium on Operating systems principles
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Bugs as deviant behavior: a general approach to inferring errors in systems code
SOSP '01 Proceedings of the eighteenth ACM symposium on Operating systems principles
An empirical study of operating systems errors
SOSP '01 Proceedings of the eighteenth ACM symposium on Operating systems principles
Flow-sensitive type qualifiers
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Think: A Software Framework for Component-based Operating System Kernels
ATEC '02 Proceedings of the General Track of the annual conference on USENIX Annual Technical Conference
Evolution in Open Source Software: A Case Study
ICSM '00 Proceedings of the International Conference on Software Maintenance (ICSM'00)
Improving the reliability of commodity operating systems
ACM Transactions on Computer Systems (TOCS)
Mining software repositories to assist developers and support managers
Mining software repositories to assist developers and support managers
Linux Device Drivers, 3rd Edition
Linux Device Drivers, 3rd Edition
Thorough static analysis of device drivers
Proceedings of the 1st ACM SIGOPS/EuroSys European Conference on Computer Systems 2006
Checking system rules using system-specific, programmer-written compiler extensions
OSDI'00 Proceedings of the 4th conference on Symposium on Operating System Design & Implementation - Volume 4
Semantic patches considered helpful
ACM SIGOPS Operating Systems Review
Semantic patches for documenting and automating collateral evolutions in Linux device drivers
Proceedings of the 3rd workshop on Programming languages and operating systems: linguistic support for modern operating systems
SmPL: A Domain-Specific Language for Specifying Collateral Evolutions in Linux Device Drivers
Electronic Notes in Theoretical Computer Science (ENTCS)
Reliable device drivers require well-defined protocols
HotDep'07 Proceedings of the 3rd workshop on on Hot Topics in System Dependability
Documenting and automating collateral evolutions in linux device drivers
Proceedings of the 3rd ACM SIGOPS/EuroSys European Conference on Computer Systems 2008
Reboots are for hardware: challenges and solutions to updating an operating system on the fly
ATC'07 2007 USENIX Annual Technical Conference on Proceedings of the USENIX Annual Technical Conference
Towards easing the diagnosis of bugs in OS code
Proceedings of the 4th workshop on Programming languages and operating systems
Collateral evolution of applications and databases
Proceedings of the joint international and annual ERCIM workshops on Principles of software evolution (IWPSE) and software evolution (Evol) workshops
Shared device driver model for virtualized mobile handsets
Proceedings of the First Workshop on Virtualization in Mobile Computing
ASE '08 Proceedings of the 2008 23rd IEEE/ACM International Conference on Automated Software Engineering
Automated Software Engineering
The semantics of "semantic patches" in Coccinelle: program transformation for the working programmer
APLAS'07 Proceedings of the 5th Asian conference on Programming languages and systems
A graph-based approach to API usage adaptation
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
A method for analyzing code homology in genealogy of evolving software
FASE'10 Proceedings of the 13th international conference on Fundamental Approaches to Software Engineering
Identifying Linux bug fixing patches
Proceedings of the 34th International Conference on Software Engineering
Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering
A case study of cross-system porting in forked projects
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
Beyond expert-only parallel programming?
Proceedings of the 2012 ACM workshop on Relaxing synchronization for multicore and manycore scalability
Safe and automatic live update for operating systems
Proceedings of the eighteenth international conference on Architectural support for programming languages and operating systems
Hi-index | 0.00 |
In a modern operating system (OS), device drivers can make up over 70% of the source code. Driver code is also heavily dependent on the rest of the OS, for functions and data structures defined in the kernel and driver support libraries. These properties pose a significant problem for OS evolution, as any changes in the interfaces exported by the kernel and driver support libraries can trigger a large number of adjustments in dependent drivers. These adjustments, which we refer to as collateral evolutions, may be complex, entailing substantial code reorganizations. As to our knowledge there exist no tools to help in this process, collateral evolution is thus time consuming and error prone.In this paper, we present a qualitative and quantitative assessment of collateral evolution in Linux device driver code. We provide a taxonomy of evolutions and collateral evolutions, and use an automated patch-analysis tool that we have developed to measure the number of evolutions and collateral evolutions that affect device drivers between Linux versions 2.2 and 2.6. In particular, we find that from one version of Linux to the next, collateral evolutions can account for up to 35% of the lines modified in such code.