A Practical Verification Framework for Preemptive OS Kernels
|
The Verification Framework
Modeling Preemptive OS Kernels
- memory.v : the C memory model
- language.v: the low-level language for a practical
subset of C, and the high-level specification language
- opsem.v: the operational semantics for the low-level
and high-level languages
Refinement-based Program Logic
- assertion.v: the assertion language
- inferules.v: the inference rules
- soundness.v: the soundness proofs of the inference rules
- toprule.v: the top rule and the soundness theorem of the
verification framework
-
simulation.v: definitions of compositional simulation
relations, which are employed as the underlying semantics for proving
the soundness of the program logic
-
toptheorem.v : OS correctness definition and auxiliary
compositionality lemmas
|
Automated Tactics Support
|
Verifying uC/OS-II
-
kernel code: notations, macros, Coq definitions for the C code of
key modules of uC/OS-II
-
specifications: the specifications for uC/OS-II and PIF proofs
-
OSQInvDef.v & OSTCBInvDef.v : global invariants for
specifying the shared resources between interrupt handlers
and non-handler code
-
absop.v : the specification code written with our specification
language for specifying kernel APIs and interrupt handlers of
uC/OS-II
-
InternalFunSpec.v : specifications of internal functions
-
absop_rules.v : abstract implication rules of abstract
operations
-
PIF_def.v : the definition of priority-inversion-freedom (PIF)
-
refinement proofs: refinement proofs for internal functions, APIs and
interrupts (e.g. OSTimeDlyProof.v )
-
ucos_correct.v: two final theorems, which
are for the functional correctness of APIs (as contextual refinement) and PIF of mutexes (no nested use)
in uC/OS-II, respectively
|