Skip to content

1. Structure

Andrew Chin edited this page May 2, 2019 · 6 revisions

This section contains a detailed breakdown of the directory structure found in the project repository which is important for the purpose of development.

  • tsan - TSan top directory (drop into the LLVM Compiler RT directory before building)
    • rtl - TSan runtime library
      • ufo - UFO online program tracing library
  • ufo-predict - java project which implements the offline trace analysis

The directory tsan is mostly the same as the directory that would be found in the LLVM Compiler RT module [1]. We highlight the differences here:

  • The subdirectory tsan/rtl/ufo/ has been added, which contains the library for trace generation.
  • Functions from the UFO tracing library have been added into the TSan rtl in order to instrument code and produce execution traces at runtime. For details, see the wiki page, "UFO Tracing In Depth."

UFO RTL Structure

This section contains information over each file in UFO's runtime library (tsan/rtl/ufo/). For an overview of the implementation, see Section 5. UFO IMPLEMENTATION in our ICSE '18 paper [2].

  • defs.h: contains the definitions of runtime command line arguments which affect the functionality of UFO. For details on usage, see the project README at https://github.com/parasol-aser/UFO/#ufo-usage

  • ufo.h/cc: this is the main class definition for the UFO tracing library. Defined here are function pointers to the tracing functions, user command line args, and data structures for tracing.

  • ufo_interface.h/cc: this is the external interface to the UFO tracing library. Defined here are the functions that are called in the TSan RTL. (for a complete list of their insertion points in the TSan RTL, see "UFO Tracing In Depth")

  • ufo_stat.h/cc: contains the data structure and functions responsible for printing a summary of the current process' runtime statistics when a trace is finished (upon call to aser::ufo::finish_ufo()).

  • tlbuffer.h/cc:

  • report.h/cc: not currently in use.

  • io_queue.h/cc:

  • rtl_impl.h:

  • dummy_rtl.h:

  • impl_mem_acc.h:

References

[1] https://compiler-rt.llvm.org/

[2] https://parasol.tamu.edu/people/jeff/academic/ufo.pdf

Clone this wiki locally