========================================================================================= Directory structure: ========================================================================================= The folders are nested as follow: ********************************************************************** fail: Fail* parent directory, containing all source & configuration files (${FAIL_DIR}) |-cmake: CMake-related configuration files (e.g. compiler-flags, dependencies, ...) |-doc: Fail*-Framework documentation (e.g., diagrams, howtos, ...) |-deprecated: temporal and old (source) files, which will probably be deleted |-scripts: python/shell scripts for Fail*-compilation and experiment distribution |-simulators: parent directory of simulators supported by Fail* (may still be WIP) |-bochs: source files of the (modified) Bochs x86 simulator backend |-gem5: source files of the gem5 simulator backend |-debuggers: parent directory of debuggers supported by Fail* (may still be WIP) |-gdb: source files related to the GNU gdb debugger |-t32: source files related to the Lauterbach T32 debugger |-src: C/C++/AspectC++ source files related to Fail*, experiments and plugins |-core: core source files forming the Fail* framework |-util: utility classes and miscellaneous helper functions |-config: CMake configuration files, defining the Fail* components and variant |-sal: source file forming the Simulator Abstraction Layer (backend-interface) |-bochs: backend source files of the Bochs simulator |-gem5: backend source files of the gem5 simulator |-qemu: backend source files of the QEMU simulator |-t32: backend source files of the Lauterbach T32 debugger |-arm: ARM-specific platform source files |-x86: x86-specific platform source files |-perf: performance-related source files (extensions); speeds up Fail* <-> simulator interaction (e.g., when using breakpoints) |-cpn: campaign- (and therefore server-)related source files |-efw: experiment-framework- (and therefore client-)related source files |-comm: communication related source files (these files are used by cpn and efw), incl. protobuf message definitions used for communication purposes |-experiments: experiment code files (within a new dir) need to be located here |-plugins: plugin code files (within a new dir) need to be located here |-tools: Fail*-related tools, e.g., for tracing or fault-space pruning |-[build]: recommended location of your build-tree, generated files will be placed here Some additional useful notes: ********************************************************************** - The source files have been documented using Doxygen comments. The Doxygen documentation can be generated by typing "make doc" in your build-tree. The resulting HTML and LaTeX files will be located in "${BUILD_DIR}/src/core/doc/". - CMake supports an "in-source" build-tree. We recommend you not to use this "feature", because it leads to a cluttered directory structure (mixing original source files and generated code/config files). (Since it is still possible, however, the "build" directory is optional.) - CMake invokes the compiler with the following include directories: * ${FAIL_DIR}/src/core * ${BUILD_DIR}/src/core When compiling the $SIMULATOR variant the following directory is added, too: * ${FAIL_DIR}/simulators/$SIMULATOR These definitions simplify and shorten the include paths. ========================================================================================= Namespace structure: ========================================================================================= All classes, functions, constants, etc. are encapsulated in the namespace "fail". Experiments and plugins (see corresponding directories above) are located in the global scope (not in the "fail"-namespace).