Programs used to produce the figures in the paper:

Understanding Collateral Evolution in Linux Device Drivers


The main and more interesting program is the patch analyzer, also called patchparse, which is described in section 5.2 of the paper.
It has produced figures 13, 14, and 15.

The second program is the interface analyzer.
It has produced figures 10, 11, and 12.

We make publicly available our programs in order for other people to:

We have chosen to publish only the binary versions of our program, mainly because the source code does not satisfy yet the quality required by open source software. Still, the source version of our programs may be requested by email to the authors.

The patch analyzer, also called patchparse

Here is the binary x86 program: patch-analyzer

Note that the algorithm of the program has been slightly changed since the publication of the paper. As a consequence, the numbers you get may slightly differ from the numbers presented in the paper.

You must first download on your disk the patch files of Linux you are interested in. You can get them from Put all the (decompressed) patches in the same directory and pass the path of this directory to the patch-analyzer program via the -patchdir option.

The bindings of -out_dir and -patchdir have to be updated according to where you want the output to appear and where the patches are, respectively.

One output of the program is the file alln.dvi, where n is the name of the version, e.g. 2.5. This is in the directory from which you run patch-analyzer, not in out_dir.

Example invocation:

The interface analyzer

Here is the binary x86 program: interface-analyzer
This program needs additional pre processing made by another program, a Perl script that you must also download: the script

You must first download on your disk the versions of the Linux source you are interested in. You can get them from

There is two steps to do before being able use the interface-analyzer program.
First, decompress one source, e.g. cd /tmp; tar xvfj ~/kernels/src/linux-2.5.61.tar.bz2.
Second, generate the dependencies, e.g. cd /tmp/linux-2.5.61; make config; make dep; make include/asm.

Now you can launch interface-analyzer. The program works in three passes:

Auxiliary scripts

We used additional scripts (mainly Perl scripts):

As for the two main programs, those scripts does not yet satisfy the quality of open source software, but they may be requested by email, in case you think they may be of any help.

Last modified: April 17, 2006 by Yoann Padioleau (ypadiole at emn dot fr)