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.
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 www.kernel.org.
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:
./patch-analyzer -patchdir ~/kernels/patches/ -outdir . 24
./patch-analyzer ... -dir drivers/usb
./patch-analyzer ... -dir drivers/usb 24
./patch-analyzer ... -dir drivers/usb -version 2.4
./patch-analyzer ... -dir drivers/usb -noev
./patch-analyzer ... -dir drivers/usb -noall
./patch-analyzer ... -dir drivers/usb -notex
./patch-analyzer ... -nographs
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 nogccext.pl
You must first download on your disk the versions of the Linux source you are interested in. You can get them from www.kernel.org.
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:
./interface-analyzer -path_cinfo_files ~/cocci_data/ -path_nogccext ~/cocci_programs/ -dir /tmp/linux-2.5.61/drivers/
./interface-analyzer -action generate_dependencies ~/cocci_data/2.5.61/drivers/
./interface-analyzer -action driver_informations ~/cocci_data/2.5.61/drivers/
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.