Skip to content
Ben Blum edited this page Nov 17, 2016 · 3 revisions

Hi Dave.

TODO list for perhaps what this wiki should document.

  • Overview by order of the codebase

    • Features of interface with simics (entrypoint, memory/instruction tracing, ways to modify the machine state)
    • An attempt to make sense of the horrible mess of setup scripts in pebsim/
    • Scheduler state machine
    • Scheduler timer tick algorithm
    • Exploration, estimation, backtracking logic (explore.c, estimate.c, save.c, respectively; but they are all intertwined)
    • Instrumentation hooks (*_specifics.{c,h} and how they interact with the setup scripts)
    • Memory stuff (especially regarding the mess that determines how to treat accesses depending whether they come from a pebbles, a pintos, or a p2)
    • What, exactly, arbiter.c is responsible for (mostly antiquated, including search-ordering heuristics, but now most notably includes the deadlock check (and false positive avoidance thereof).
  • Overview by order of algorithms

    • DPOR (mostly explore.c but the memory independence is computed in save.c)
    • Estimation (mostly estimate.c but also intertwined with explore.c and user_sync.c)
    • ICB (mostly explore.c but also some in schedule.c, arbiter.c)
    • Yield/xchg loop blocking (mostly user_sync.c but also intertwined with arbiter.c and schedule.c)
    • Not much to say about the heap checking really (memory.c).
    • Data-race detection (pretty much only memory.c, using vector_clock.c as a library)
  • Quicksand

    • Much more organized than landslide, and a codebase tour is already available at https://github.com/bblum/oopsla-quicksand
    • Document the scripts in pebsim/ (mostly build.sh, i think?) that implement the gross parts of the interface to landslide (TEST_CASE=, within_functions, etc)
  • Maybe some pages with notes/speculation on what to do for future work projects

Clone this wiki locally