-
Notifications
You must be signed in to change notification settings - Fork 9
Home
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