article

Understanding collateral evolution in Linux device drivers

Published:18 April 2006Publication History

Abstract

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.

References

  1. J. Appavoo, M. Auslander, M. Burtico, D. D. Silva, O. Krieger, M. Mergen, M. Ostrowski, B. Rosenburg, R. W. Wisniewski, and J. Xenidis. K42: an open-source Linux-compatible scalable operating system kernel. IBM Systems Journal, 44(2):427--440, 2005.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. T. Ball, E. Bounimova, B. Cook, V. Levin, J. Lichtenberg, C. McGarvey, B. Ondrusek, S. K. Rajamani, and A. Ustuner. Thorough static analysis of device drivers. In The first ACM SIGOPS EuroSys conference (EuroSys 2006), Leuven, Belgium, Apr. 2006. To appear.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. A. Chou, J. Yang, B. Chelf, S. Hallem, and D. Engler. An empirical study of operating systems errors. In SOSP'01 {21}, pages 73--88.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. A. C. de Melo, D. Jones, and J. Garzik, 2001. http://umeet.uninet.edu/umeet2001/talk/15--12--2001/arnaldo-talk.html.]]Google ScholarGoogle Scholar
  5. D. R. Engler, B. Chelf, A. Chou, and S. Hallem. Checking system rules using system-specific, programmer-written compiler extensions. In Proceedings of the Fourth USENIX Symposium on Operating Systems Design and Implementation (OSDI), pages 1--16, San Diego, CA, Oct. 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. D. R. Engler, D. Y. Chen, A. Chou, and B. Chelf. Bugs as deviant behavior: A general approach to inferring errors in systems code. In SOSP'01 {21}, pages 57--72.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. J.-P. Fassino, J.-B. Stefani, J. Lawall, and G. Muller. THINK: A software framework for component-based operating system kernels. In 2000 USENIX Annual Technical Conference, pages 73--86, Monterey, CA, June 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. B. Ford, G. Back, G. Benson, J. Lepreau, A. Lin, and O. Shivers. The Flux OSKit: A substrate for kernel and language research. In Proceedings of the 16th ACM Symposium on Operating Systems Principles (SOSP'97), pages 38--51, Saint-Malo, France, Oct. 1997.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. J. S. Foster, T. Terauchi, and A. Aiken. Flow-sensitive type qualifiers. In Proceedings of the 2002 ACM SIGPLAN conference on Programming Language Design and Implementation, pages 38--51, Berlin, Germany, June 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. M. Fowler, K. Beck, J. Brant, W. Opdyke, and D. Roberts. Refactoring: Improving the Design of Existing Code. Addison-Wesley Professional, 1999.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. M. W. Godfrey and Q. Tu. Evolution in open source software: A case study. In International Conference on Software Maintenance (ICSM'00), pages 131--142, San Jose, CA, 2000. IEEE.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. A. E. Hassan. Mining Software Repositories to Assist Developers and Support Managers. PhD thesis, School of Computer Science, Faculty of Mathematics, University of Waterloo, Ontario, Canada, 2004.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. C. Hellwig, 2003. http://www.cs.helsinki.fi/linux/linux- kernel/2003--20/1120.html.]]Google ScholarGoogle Scholar
  14. P. Koellner, Feb. 2002. http://www.uwsg.iu.edu/hypermail/linux/kernel/0202.2/0106.html.]]Google ScholarGoogle Scholar
  15. J. LeVasseur, V. Uhlig, J. Stoess, and S. Götz. Unmodified device driver reuse and improved system dependability via virtual machines. In OSDI'04 {19}, pages 17--30.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Z. Li, S. Lu, S. Myagmar, and Y. Zhou. CP-Miner: A tool for finding copy-paste and related bugs in operating system code. In OSDI'04 {19}, pages 289--302.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. LWN. API changes in the 2.6 kernel series, Oct. 2005. http://lwn.net/Articles/2.6-kernel-api/.]]Google ScholarGoogle Scholar
  18. D. S. Miller, Feb. 2002. http://www.ussg.iu.edu/hypermail/linux/kernel/0202.1/0855.html.]]Google ScholarGoogle Scholar
  19. Proceedings of the Sixth USENIX Symposium on Operating Systems Design and Implementation (OSDI), San Fransisco, CA, Dec. 2004.]]Google ScholarGoogle Scholar
  20. A. Rubini and J. Corbet. Linux Device Drivers, 2nd Edition. O'Reilly, June 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Proceedings of the 18th ACM Symposium on Operating System Principles, Banff, Canada, Oct. 2001.]]Google ScholarGoogle Scholar
  22. M. M. Swift, M. Annamalai, B. N. Bershad, and H. M. Levy. Recovering device drivers. In OSDI'04 {19}, pages 1--16.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. M. M. Swift, B. N. Bershad, and H. M. Levy. Improving the reliability of commodity operating systems. ACM Transactions on Computer Systems, 23(1):77--110, Feb. 2005.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. D. Wambolt, Dec. 2001. http://seclists.org/lists/linux-kernel/2001/Dec/2027.html.]]Google ScholarGoogle Scholar
  25. J. Weber, Feb. 2002. http://www.ussg.iu.edu/hypermail/linux/kernel/0202.1/0697.html.]]Google ScholarGoogle Scholar

Index Terms

  1. Understanding collateral evolution in Linux device drivers

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in

          Full Access

          • Published in

            cover image ACM SIGOPS Operating Systems Review
            ACM SIGOPS Operating Systems Review  Volume 40, Issue 4
            Proceedings of the 2006 EuroSys conference
            October 2006
            383 pages
            ISSN:0163-5980
            DOI:10.1145/1218063
            Issue’s Table of Contents
            • cover image ACM Conferences
              EuroSys '06: Proceedings of the 1st ACM SIGOPS/EuroSys European Conference on Computer Systems 2006
              April 2006
              420 pages
              ISBN:1595933220
              DOI:10.1145/1217935

            Copyright © 2006 Authors

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 18 April 2006

            Check for updates

            Qualifiers

            • article

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader
          About Cookies On This Site

          We use cookies to ensure that we give you the best experience on our website.

          Learn more

          Got it!