Overview
Syllabus
Intro
the kernel has tons of configuration options
this configurability brings maintenance challenges
there are serious cases of unexpected interactions between configuration options
there are even more pernicious examples of bad combinations of configuration options
first steps towards tackling the maintenance challenges of configurability
a common problem: mapping code back to the configurations that control that code
what does linux's build system do?
let's look at the phases of build process
the build system as code generation using metaprogramming
configuration localization is finding the inverse of the build process
each phase of the build encodes rules to control the inclusion and exclusion of source code
we can use boolean logic to represent the "buildability" of code at each step
configuration localization then becomes the boolean satisfiability problem
when you come to a fork in the road, take it
tooling
SuperC does configuration-preserving C preprocessing (and parsing)
Kmax collects Kbuild Makefile conditions for each source file's constraints
Kclause converts Kconfig files into logical fomulas
conclusion
Taught by
Linux Foundation