Access the full text.
Sign up today, get DeepDyve free for 14 days.
E. Merlo, M. Dagenais, P. Bachand, J. Sormani, S. Gradara, G. Antoniol (2002)
Investigating large software system evolution: the Linux kernelProceedings 26th Annual International Computer Software and Applications
D. Spinellis (2017)
A repository of Unix history and evolutionEmpirical Software Engineering, 22
André Hora, R. Robbes, N. Anquetil, Anne Etien, Stéphane Ducasse, M. Valente (2015)
How do developers react to API evolution? The Pharo ecosystem case2015 IEEE International Conference on Software Maintenance and Evolution (ICSME)
Vaggelis Atlidakis, Jeremy Andrus, Roxana Geambasu, Dimitris Mitropoulos, Jason Nieh (2016)
POSIX abstractions in modern operating systems: the old, the new, and the missingProceedings of the Eleventh European Conference on Computer Systems
L. Passos, K. Czarnecki, A. Wąsowski (2012)
Towards a catalog of variability evolution patterns: the Linux kernel case
(2009)
Add compat truncate
R. Lotufo, S. She, T. Berger, K. Czarnecki, A. Wąsowski (2010)
Evolution of the Linux Kernel Variability Model
(2012)
braindump][rfc] signals and syscall restarts
D. Spinellis (2015)
A Repository with 44 Years of Unix Evolution2015 IEEE/ACM 12th Working Conference on Mining Software Repositories
G. Antoniol, Umberto Villano, E. Merlo, M. Penta (2002)
Analyzing cloning evolution in the Linux kernelInf. Softw. Technol., 44
Zhenchang Xing, Eleni Stroulia (2007)
API-Evolution Support with Diff-CatchUpIEEE Transactions on Software Engineering, 33
(2017)
Analyzing a decade of Linux system calls
(2000)
The pragmatic programmer
A. Hassan (2009)
Predicting faults using the complexity of code changes2009 IEEE 31st International Conference on Software Engineering
Johannes Henkel, Amer Diwan (2005)
CatchUp! Capturing and replaying refactorings to support API evolutionProceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005.
Michael Godfrey, Q. Tu (2001)
Growth, evolution, and structural change in open source software
(2006)
Exploring methods for evaluating group differences on the NSSE and other surveys: Are the t-test and Cohen’s d indices the most appropriate choices
Nicolas Palix, Gaël Thomas, S. Saha, C. Calvès, J. Lawall, Gilles Muller (2011)
Faults in linux: ten years later
(2008)
Fix sys sync file range call convention
(2017)
Instruction Set Reference, A-Z
Chia-che Tsai, Bhushan Jain, N. Abdul, Donald Porter (2016)
A study of modern Linux API usage and compatibility: what to support when you're supportingProceedings of the Eleventh European Conference on Computer Systems
(2013)
correctly wire up mq functions for compat case
(2000)
He is Professor in the School of Computing at Queen’s University where he leads the Modeling and Analysis in Software Engineering group
Lin Tan, Chen Liu, Zhenmin Li, Xuanhui Wang, Yuanyuan Zhou, ChengXiang Zhai (2013)
Bug characteristics in open source softwareEmpirical Software Engineering, 19
M. Bismark, David Studdert (2013)
Governance of quality of care: a qualitative study of health service boards in Victoria, AustraliaBMJ Quality & Safety, 23
(2007)
Reorder syscalls to match
André Hora, R. Robbes, M. Valente, N. Anquetil, Anne Etien, Stéphane Ducasse (2016)
How do developers react to API evolution? A large-scale empirical studySoftware Quality Journal, 26
Simone Livieri, Yoshiki Higo, M. Matsushita, Katsuro Inoue (2007)
Analysis of the Linux Kernel Evolution Using Code Clone CoverageFourth International Workshop on Mining Software Repositories (MSR'07:ICSE Workshops 2007)
C. Izurieta, J. Bieman (2006)
The evolution of FreeBSD and linux
(2002)
Compatibility syscall layer (lets try again)
(2013)
Running mission-critical workloads on enterprise linux x86 servers
(2014)
renameat2 does not need (or have) a separate compat system
J. Long, Du Feng, N. Cliff (2003)
Ordinal Analysis of Behavioral Data
(2009)
net: Introduce recvmmsg socket syscall. https://github.com/torvalds/linux/commit/ a2e2725541
Shan Lu, Soyeon Park, Eunsoo Seo, Yuanyuan Zhou (2008)
Learning from mistakes: a comprehensive study on real world concurrency bug characteristics
S. Weisberg (2010)
Nonparametric Regression in R
(2017)
describe how to add a system call
S Lu (2008)
10.1145/1353535.1346323SIGOPS Operating Syst Rev, 42
(2017)
Mike Hayward: Intel P6 vs P7 system call performance
A. Israeli, D. Feitelson (2010)
The Linux kernel as a case study in software evolutionJ. Syst. Softw., 83
D. Spinellis, P. Louridas, M. Kechagia (2016)
The Evolution of C Programming Practices: A Study of the Unix Operating System 1973-20152016 IEEE/ACM 38th International Conference on Software Engineering (ICSE)
Yoann Padioleau, J. Lawall, Gilles Muller (2006)
Understanding collateral evolution in Linux device driversProceedings of the 1st ACM SIGOPS/EuroSys European Conference on Computer Systems 2006
(2012)
Scalable event multiplexing: epoll vs. kqueue
Danny Dig, Ralph Johnson (2005)
The role of refactorings in API evolution21st IEEE International Conference on Software Maintenance (ICSM'05)
W. Mauerer (2008)
Professional Linux Kernel Architecture
(2014)
Xtensa : deprecate fast xtensa and fast spill registers syscalls
M. Vásquez, G. Bavota, Carlos Bernal-Cárdenas, M. Penta, R. Oliveto, D. Poshyvanyk (2013)
API change and fault proneness: a threat to the success of Android apps
(2017)
Architecture support for Tensilica Xtensa Part 1
Lanyue Lu, A. Arpaci-Dusseau, Remzi Arpaci-Dusseau, Shan Lu (2013)
A Study of Linux File System EvolutionACM Transactions on Storage (TOS), 10
Danny Dig, Ralph Johnson (2006)
How do APIs evolve? A story of refactoringJ. Softw. Maintenance Res. Pract., 18
Tyler McDonnell, Baishakhi Ray, Miryung Kim (2013)
An Empirical Study of API Stability and Adoption in the Android Ecosystem2013 IEEE International Conference on Software Maintenance
Zhenmin Li, Lin Tan, Xuanhui Wang, Shan Lu, Yuanyuan Zhou, ChengXiang Zhai (2006)
Have things changed now?: an empirical study of bug characteristics in modern open source software
M. Lehman (1980)
Programs, life cycles, and laws of software evolutionProceedings of the IEEE, 68
(2002)
A new system call restart mechanism
Fix timerfd breakage on avr 32
(2006)
PATCH] Implement AT_SYMLINK_FOLLOW flag for linkat
(2017)
nfsservctl
Matt Davis (2011)
Creating a vDSO: the colonel's other chickenLinux Journal, 2011
Linus Torvalds . Linux git repository
J. Perkins (2005)
Automatically generating refactorings to support API evolution
(2014)
The possible demise of remap file pages()
(2013)
system support for improving software dependability, pages 25–33
Michael Godfrey, Q. Tu (2000)
Evolution in open source software: a case studyProceedings 2000 International Conference on Software Maintenance
S. Baum, B. Tonn (2003)
IntroScience, 302
José Júnior (2017)
Historical and impact analysis of API breaking changes
(2017)
writev
C. Bogart, Christian Kästner, J. Herbsleb, Ferdian Thung (2016)
How to break an API: cost negotiation and community values in three software ecosystemsProceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering
(2002)
Process tracing using ptrace
Laerte Xavier, Aline Brito, André Hora, M. Valente (2017)
Historical and impact analysis of API breaking changes: A large-scale study2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER)
(2017)
the essential guide to getting your code into the kernel
Over the past 25 years, thousands of developers have contributed more than 18 million lines of code (LOC) to the Linux kernel. As the Linux kernel forms the central part of various operating systems that are used by millions of users, the kernel must be continuously adapted to the changing demands and expectations of these users. The Linux kernel provides its services to an application through system calls. The combined set of all system calls forms the essential Application Programming Interface (API) through which an application interacts with the kernel. In this paper, we conduct an empirical study of 8,770 changes that were made to Linux system calls during the last decade (i.e., from April 2005 to December 2014). In particular, we study the size of the changes, and we manually identify the type of changes and bug fixes that were made. Our analysis provides an overview of the evolution of the Linux system calls over the last decade. We find that there was a considerable amount of technical debt in the kernel, that was addressed by adding a number of sibling calls (i.e., 26% of all system calls). In addition, we find that by far, the ptrace() and signal handling system calls are the most challenging to maintain. Our study can be used by developers who want to improve the design and ensure the successful evolution of their own kernel APIs.
Empirical Software Engineering – Springer Journals
Published: Oct 13, 2017
Read and print from thousands of top scholarly journals.
Already have an account? Log in
Bookmark this article. You can see your Bookmarks on your DeepDyve Library.
To save an article, log in first, or sign up for a DeepDyve account if you don’t already have one.
Copy and paste the desired citation format or use the link below to download a file formatted for EndNote
Access the full text.
Sign up today, get DeepDyve free for 14 days.
All DeepDyve websites use cookies to improve your online experience. They were placed on your computer when you launched this website. You can change your cookie settings through your browser.