Development tools for the kernel¶
This document is a collection of documents about development tools that canbe used to work on the kernel. For now, the documents have been pulledtogether without any significant effort to integrate them into a coherentwhole; patches welcome!
A brief overview of testing-specific tools can be found inKernel Testing Guide
Tools that are specific to debugging can be found inDebugging advice for Linux Kernel developers
Table of contents
- Kernel Testing Guide
- Checkpatch
- clang-format
- Coccinelle
- Getting Coccinelle
- Supplemental documentation
- Using Coccinelle on the Linux kernel
- Coccinelle parallelization
- Using Coccinelle with a single semantic patch
- Controlling Which Files are Processed by Coccinelle
- Debugging Coccinelle SmPL patches
- .cocciconfig support
- Additional flags
- SmPL patch specific options
- SmPL patch Coccinelle requirements
- Proposing new semantic patches
- Detailed description of the
reportmode - Detailed description of the
patchmode - Detailed description of the
contextmode - Detailed description of the
orgmode
- Sparse
- KCOV: code coverage for fuzzing
- Using gcov with the Linux kernel
- Kernel Address Sanitizer (KASAN)
- Kernel Memory Sanitizer (KMSAN)
- Undefined Behavior Sanitizer - UBSAN
- Kernel Memory Leak Detector
- Kernel Concurrency Sanitizer (KCSAN)
- Linux Kernel Memory Consistency Model (LKMM)
- Kernel Electric-Fence (KFENCE)
- Linux Kernel Selftests
- Documentation on the tests
- Running the selftests (hotplug tests are run in limited mode)
- Running a subset of selftests
- Running the full range hotplug selftests
- Install selftests
- Running installed selftests
- Timeout for selftests
- Packaging selftests
- Contributing new tests
- Contributing new tests (details)
- Test Module
- Test Harness
- KUnit - Linux Kernel Unit Testing
- The Kernel Test Anything Protocol (KTAP), version 1
- UAPI Checker
- Linux Kernel GPIO based sloppy logic analyzer
- Using AutoFDO with the Linux kernel
- Using Propeller with the Linux kernel