LICENSE
This content has been generated via the EU H2020 RIA project COEMS - Continuous Observation of Embedded Multicore Systems
https://www.coems.eu

This work is licensed under a Creative Commons Attribution 4.0 International License, see https://creativecommons.org/licenses/by/4.0/.

The COEMS project is funded through the European Horizon 2020 program under grant agreement no. 732016.

OVERVIEW
This folder contains Open Data for several cases of study in the context of the COEMS EU H2020 project, which provides a novel platform for online monitoring of multicore systems.
For each case of study, we collect these data: the source code, the compiled instrumented binary file, the execution traces, the result of analyzing those execution traces using Tessla specifications, and the Tessla specifications.
Each experiment usually consists of a 'default' version, that shows the ideal implementation and execution of a multicore code with no errors; and one or more 'faulty' versions which include, for instance, potential data race errors or deadlocks.
The evaluation of Tessla specifications over the execution traces should point out potential problems in the code.
The content of this folder is organised in several subfolders depending on the name of the experiment and the selected configuration (i.e., 'default' or 'faulty').
In particular, the folder hierarchy is:
Root:
|_> case_study_name:
    |_> src/
    |_> bin/
    |_> traces/
        |_> default
        |_> others
    |_> result/
        |_> default
        |_> others

The src/ folder contains a flattened version of the original C code, which is shrunk into a single file in the case of several source files.
The bin/ folder contains the compilation of the C file into a binary executable.
The names of the flattened C file and binary executables are appended with the 'default' ('data_race') label for identifying the good and buggy versions.
The traces/ folder contains the execution traces and the Tessla specifications.
The result/ folder contains the result of evaluating the Tessla specifications on the execution traces.
The execution traces and Tessla results are classified in several subfolders depending on the target configuration (i.e., 'default').

SPECIFIC CONFIGURATION

This README file and the rest of the data in this folder have been automatically created.
The experiments are run on the COEMS specific hardware (ARM platform) in order to run the online monitoring and analysis of execution traces.
A Personal Computer (x86 platform) can run the offline monitoring of execution traces for the same experiments by tuning some configuration parameters.
ARM hardware traces are emulated by applying the diff_ts.pl script over the x86 software traces.
The case of study that are analyzed are:
readers_writers rosace_case_study

COMMAND LINE

The following lines record the most important command lines that are executed during the generation of the Open Data set.

Folders: readers_writers/src_readers_writers readers_writers/bin_readers_writers readers_writers/traces_readers_writers readers_writers/result_readers_writers
Experiment readers_writers/default

Clean & Compile
make -f MakefileArm clean

Software trace: readers_writers/traces_readers_writers/default/swtrace_1.log
Hardware trace: readers_writers/traces_readers_writers/default/hwtrace_1.log

Analyze the traces using Tessla specs
java -jar /home/jose/opt/bin/isp/epu-output.jar mapper  readers_writers/traces_readers_writers/default/hwtrace_1.log | java -jar /home/jose/lock-instrumentation/data-race-spec/tessla.jar readers_writers/traces_readers_writers/default/rw_2ndhalf.tessla > readers_writers/result_readers_writers/default/tessla_hw_1.out
java -jar DR_PATH/data-race-spec/tessla.jar readers_writers/traces_readers_writers/default/rw_hw_sw_2.tessla readers_writers/traces_readers_writers/default/swtrace_1.log > readers_writers/result_readers_writers/default/tessla_sw_1.out

Software trace: readers_writers/traces_readers_writers/default/swtrace_2.log
Hardware trace: readers_writers/traces_readers_writers/default/hwtrace_2.log

Analyze the traces using Tessla specs
java -jar /home/jose/opt/bin/isp/epu-output.jar mapper  readers_writers/traces_readers_writers/default/hwtrace_2.log | java -jar /home/jose/lock-instrumentation/data-race-spec/tessla.jar readers_writers/traces_readers_writers/default/rw_2ndhalf.tessla > readers_writers/result_readers_writers/default/tessla_hw_2.out
java -jar DR_PATH/data-race-spec/tessla.jar readers_writers/traces_readers_writers/default/rw_hw_sw_2.tessla readers_writers/traces_readers_writers/default/swtrace_2.log > readers_writers/result_readers_writers/default/tessla_sw_2.out

Experiment readers_writers/race

Clean & Compile
make -f MakefileArm clean

Software trace: readers_writers/traces_readers_writers/race/swtrace_1.log
Hardware trace: readers_writers/traces_readers_writers/race/hwtrace_1.log

Analyze the traces using Tessla specs
java -jar /home/jose/opt/bin/isp/epu-output.jar mapper  readers_writers/traces_readers_writers/race/hwtrace_1.log | java -jar /home/jose/lock-instrumentation/data-race-spec/tessla.jar readers_writers/traces_readers_writers/race/rw_2ndhalf.tessla > readers_writers/result_readers_writers/race/tessla_hw_1.out
java -jar DR_PATH/data-race-spec/tessla.jar readers_writers/traces_readers_writers/race/rw_hw_sw_2.tessla readers_writers/traces_readers_writers/race/swtrace_1.log > readers_writers/result_readers_writers/race/tessla_sw_1.out

Software trace: readers_writers/traces_readers_writers/race/swtrace_2.log
Hardware trace: readers_writers/traces_readers_writers/race/hwtrace_2.log

Analyze the traces using Tessla specs
java -jar /home/jose/opt/bin/isp/epu-output.jar mapper  readers_writers/traces_readers_writers/race/hwtrace_2.log | java -jar /home/jose/lock-instrumentation/data-race-spec/tessla.jar readers_writers/traces_readers_writers/race/rw_2ndhalf.tessla > readers_writers/result_readers_writers/race/tessla_hw_2.out
java -jar DR_PATH/data-race-spec/tessla.jar readers_writers/traces_readers_writers/race/rw_hw_sw_2.tessla readers_writers/traces_readers_writers/race/swtrace_2.log > readers_writers/result_readers_writers/race/tessla_sw_2.out

Folders: rosace_case_study/src_rosace_case_study rosace_case_study/bin_rosace_case_study rosace_case_study/traces_rosace_case_study rosace_case_study/result_rosace_case_study
Experiment rosace_case_study/default

Clean & Compile
make -f MakefileArm clean

Software trace: rosace_case_study/traces_rosace_case_study/default/swtrace_1.log
Hardware trace: rosace_case_study/traces_rosace_case_study/default/hwtrace_1.log

Analyze the traces using Tessla specs
java -jar /home/jose/opt/bin/isp/epu-output.jar mapper  rosace_case_study/traces_rosace_case_study/default/hwtrace_1.log | java -jar /home/jose/lock-instrumentation/data-race-spec/tessla.jar rosace_case_study/traces_rosace_case_study/default/rosace_min.tessla > rosace_case_study/result_rosace_case_study/default/tessla_hw_1.out
java -jar DR_PATH/data-race-spec/tessla.jar rosace_case_study/traces_rosace_case_study/default/specifications/rosace_min.tessla rosace_case_study/traces_rosace_case_study/default/swtrace_1.log | java -jar DR_PATH/data-race-spec/tessla.jar rosace_case_study/traces_rosace_case_study/default/specifications/rosace_backend.tessla > rosace_case_study/result_rosace_case_study/default/tessla_sw_1.out
