xlab-uiuc / linux-mcdc

Measure Linux kernel's modified condition/decision coverage (MC/DC)
5 stars 2 forks source link

Measure Linux kernel's modified condition/decision coverage (MC/DC)

GitHub Actions Workflow Status

GitHub Actions Workflow Status

This repository demonstrates KUnit's modified condition/decision coverage (MC/DC) of 5.15.y Linux kernel using Clang source-based code coverage and llvm-cov. A patch set for mainline kernel is also being prepared.

Follow the instructions here to get started.

Example text coverage report: link (login with any GitHub account required)

Example HTML coverage report:

Tentative repository structure:

linux-mcdc
|
├── ci/{linux-v5.15.153}
│   ├── 1_install_deps.sh
│   ├── 2_pull_source.sh
│   ├── 3_get_llvm.sh
│   ├── 4_build_kernel.sh
│   └── 5_boot_kernel_and_collect_coverage.sh
|
├── docs
│   ├── elisa-slides.pdf
│   └── measure-kernel-mcdc.md
|
├── patches
│   ├── README.md
│   └── {v0.4,v0.5,v0.6}
|
├── README.md
|
├── screenshot.png
|
└── scripts
    ├── build-llvm.sh
    └── q

We gave an ELISA seminar titled "Making Linux Fly: Towards Certified Linux Kernel". [recording] [slides]

Please feel free to open Issues/PRs if you have any suggestions or questions. You can also send emails to:

This project is a collaboration between The Boeing Company and University of Illinois Urbana-Champaign.