The files in this directory are outlines of individual lectures in the DIVINE implementation seminar series. It will walk you through the implementation and internals of DIVINE in a tutorial form. The outline of the entire series follows. # bricks Code that is not really DIVINE-specific lives under bricks/, a header-only collection of useful code snippets. The code is intended to be lightweight and simple to implement (and understand, though it often fails at that). ## Part 1 (3.7., mornfall) - bricks/brick-trace - bricks/brick-assert - bricks/brick-compose - bricks/brick-bitlevel - bricks/brick-mem - bricks/brick-ptr - bricks/brick-hash - bricks/brick-hashset ## Part 2 (tba) - bricks/brick-yaml - bricks/brick-query - bricks/brick-string - bricks/brick-cmd - bricks/brick-llvm - bricks/brick-shmem # DiOS DiOS is a model operating system that DIVINE relies on for a ton of functionality. It can run (somewhat crippled) on KLEE or as a user-mode kernel in a normal UNIX process (perhaps even in `valgrind`). ## Kernel Basics (23.5., mornfall) - sys/*, apart from sched_* - the configuration stack - the syscall mechanism, trampoline returns ## Scheduling (29.5., laky) - dios/sys/sched_* - dios/ - dios/arch/divm/reschedule.cpp - dios/libc/sys/interrupt.c - dios/include/sys/interrupt.h - lart/divine/interrupt.cpp ## POSIX Threads (5.6., xheno) - dios/include/sys/thread.h - dios/include/pthread.h - dios/libc/pthread/* - dios/libpthread/* ## File System (12.6., xstill) - dios/vfs/* ## Syscall Proxy (19.6., adamat) - dios/proxy/* # DiVM ## VM Overview (10.7., mornfall) - divine/vm/divm.h - divine/vm/ctx-*.hpp - divine/vm/pointer.hpp - divine/vm/program.* ## Evaluator (17.7., blurry) - divine/vm/eval.* - divine/vm/value.* ## Heap Data (24.7., laky) - divine/mem/types.hpp - divine/mem/frontend.* - divine/mem/data.* - divine/mem/cow.* - divine/mem/util.* ## Heap Metadata (31.7., xheno) - divine/mem/pointers.* - divine/mem/usermeta.* - divine/mem/exceptions.* - divine/mem/taint.* - divine/mem/definedness.* - divine/mem/metadata.hpp # Automated Testing (7.8., xstill) - bricks/brick-unittest - bricks/brick-shelltest - test/lib/* # DivCC (14.8., adamat) - divine/cc/* - tools/divcc.cpp - bricks/brick-llvm-link # LART ## Introspection (26.6., xsarnik) - lart/divine/{cppeh.h,cpplsda.cpp} - lart/divine/functionmeta.cpp - dios/include/sys/metadata.h - dios/libc/sys/metadata.cpp ## Runtime Support for Transformations (21.8., blurry) - dios/rst/* (minus weakmem) - dios/include/rst/* - bricks/brick-smt ## Abstraction 1 (28.8., xsarnik) - to be decided by xheno ## Abstraction 2 (4.9., laky) - to be decided by xheno ## Weakmem (11.9., xheno) - dios/rst/weakmem.cpp - lart/weakmem/* # Simulator ## Debug Info (tba) ## CLI (tba) # Model Checker ## Infrastructure, Safety (tba) ## LTL, Liveness (tba)