/usr/share/doc/undertaker/README is in undertaker 1.3b-1.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | = The VAMOS Project =
Topic of the project is variability of system software evoked by the
non-functional properties of operating-system functions, which emerges
from (a) different implementations of the same system function to make
an appearance of certain non-functional properties and (b) the using
level of those implementations in order to compensate for effects of
these properties.
With this project, the undertaker, we provide tools to examine and
evaluate CPP based source files. See
http://www4.informatik.uni-erlangen.de/Research/VAMOS/publications.shtml
for a list of publications.
For a up-to-date version of this document see
http://vamos.informatik.uni-erlangen.de/trac/undertaker/wiki
= undertaker =
The undertaker is an implementation of our preprocessor and
configuration analysis approaches. It can check the structure of your
preprocessor directives against different configuration models to find
blocks than can't be selected or deselected.
= Requirements =
* libboost-wave (1.40 or above)
* libboost-regex (1.40 or above)
* libboost-filesystem (1.40 or above)
* libboost (1.40 or above)
* [http://check.sourceforge.net check] - testing suite for C
* [http://fmv.jku.at/picosat/ picosat] (913-4 or above)
= Building =
To install the dependencies in Debian or Ubuntu, you
paste this in your shell, but be aware that the picosat package in
Debian Lenny is far to outdated.
,----
| apt-get install libboost-wave1.40-dev libboost-regex1.40-dev libboost-filesystem1.40-dev \
| libboost1.40-dev check picosat
`----
Compiling and installation
,----
| $ make
| and
| $ make install
| or $ PREFIX=/path/to/install make install
`----
= Workflow (example) =
To check a single file (or all files) in the
Linux kernel for dead or undead preprocessor blocks, you have to
extract the configuration models from the kconfig first. Therefore you
just have to execute undertaker-kconfigdump in the root of an Linux
tree. This will generate models for each architecture and place them
in the subfolder models.
,----[ $ ls models ]
| alpha.model blackfin.model h8300.model m68k.model mips.model powerpc.model sh.model x86.model
| arm.model cris.model ia64.model m68knommu.model mn10300.model s390.model sparc.model xtensa.model
| avr32.model frv.model m32r.model microblaze.model parisc.model score.model tile.model
`----
If you want to examine a single file for dead blocks with checks
against the models you can execute
,----[ $ undertaker -j dead -m models kernel/sched.c ]
| I: loaded rsf model for alpha
| [...]
| I: loaded rsf model for xtensa
| I: found 23 rsf models
| I: Using x86 as primary model
| I: creating kernel/sched.c.B250.x86.missing.dead
| I: creating kernel/sched.c.B360.x86.missing.dead
| I: creating kernel/sched.c.B362.x86.missing.dead
| I: creating kernel/sched.c.B364.missing.globally.dead
| I: creating kernel/sched.c.B368.x86.missing.dead
| I: creating kernel/sched.c.B396.x86.missing.dead
| I: creating kernel/sched.c.B408.x86.missing.dead
| I: creating kernel/sched.c.B421.x86.missing.dead
| I: creating kernel/sched.c.B437.x86.missing.dead
| I: creating kernel/sched.c.B447.missing.globally.dead
| I: creating kernel/sched.c.B556.x86.missing.dead
`----
This means in detail:
* -j dead: do an dead analysis
* -m models: load all models from directory models/
* kernel/sched.c: examine this file
* I: Using x86 as primary model": x86 is the default model which the
file is checked against (this can be changed with -M <arch>) All
* x86.missing.dead files are just dead on x86, there is at least one
architecture this block can be enabled missing.globally.dead files
are dead on every architecture.
To check all files in the Linux kernel there is the helper script
undertaker-linux-tree, which starts the undertaker with the correct
list of working files and gives it the correct count of parallel
worker processes on your multicore machine.
,----
| $ undertaker-linux-tree
`----
|