Towards Documenting and Automating Collateral Evolutions in Linux Device Driver

Subscribers:
349,000
Published on ● Video Link: https://www.youtube.com/watch?v=IOfhb1WvtQ8



Duration: 1:04:03
54 views
0


Collateral evolutions are a pervasive problem in Linux device driver development, due to the frequent evolution of Linux driver support libraries and APIs. Such evolutions are needed when an evolution in a driver support library affects the library' interface, entailing modifications in all dependent device-specific code. Currently, collateral evolutions in Linux are done nearly manually. The large number of Linux drivers, however, implies that this approach is time-consuming and unreliable, leading to subtle errors when modifications are not done consistently. In this talk, we describe the development of a language-based infrastructure, Coccinelle, with the goal of documenting and automating the kinds of collateral evolutions that occur in device driver code. We report our initial usage of Coccinelle on a range of the collateral evolutions identified in an earlier study. In many cases, Coccinelle can update 80 of the relevant Linux drivers fully automatically, with the remaining drivers requiring some manual adjustments due to variations in coding style that are not yet taken into account by our tool. We have additionally identified a number of drivers where the maintainer made some mistake in performing the collateral evolution, but Coccinelle transforms the code correctly. Our approach both eases and improves the robustness of the evolution process, and can address a variety of the problems that driver maintainers face in understanding and applying collateral evolutions in practice.




Other Videos By Microsoft Research


2016-09-07Inversion Transduction Grammar with Linguistic Constraints
2016-09-07How scheduling theory, scenarios, model checking and slicing can help in the verification of RTS
2016-09-07Innovention - the process of innovation and invention
2016-09-07Security and Privacy in Radio Frequency Identification
2016-09-07Conference XP - Automated Tracking of Student Behaviors
2016-09-07From Models to Systems: Applications of Model-based Design to Modern Large-Scale Systems
2016-09-07Splitting on Demand in Satisfiability Modulo Theories
2016-09-07Making Semiconductors Ferromagnetic: Reasons, Challenges, and Opportunities
2016-09-07Exploiting comparable corpora
2016-09-07Invisible Engines: How Software Platforms Drive Innovation        
2016-09-07Towards Documenting and Automating Collateral Evolutions in Linux Device Driver
2016-09-07Phonological Licensing of Grammatical Morphology in Early Speech
2016-09-07Purpose: The Starting Point of Great Companies          
2016-09-07Location, Time and Context in Systems: Rover - An Example
2016-09-07Exploring Tools and Techniques for Distributed Continuous Quality Assurance
2016-09-07QuickSilver Scalable Multicast
2016-09-07Splitting Interfaces: Making Trust Between Applications and Operating Systems Configurable
2016-09-07Conference XP Project Update
2016-09-07Relational Databases in the Social and Health Sciences: The View from Demography
2016-09-07Conference XP - SenseCam
2016-09-07An Abstract Decision Procedure for Algebraic Data Types



Tags:
microsoft research