Development tools for the kernel¶
This document is a collection of documents about development tools that can be used to work on the kernel. For now, the documents have been pulled together without any significant effort to integrate them into a coherent whole; patches welcome!
A brief overview of testing-specific tools can be found in Kernel Testing Guide
- 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
report
mode - Detailed description of the
patch
mode - Detailed description of the
context
mode - Detailed description of the
org
mode
- 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)
- Kernel Electric-Fence (KFENCE)
- Debugging kernel and modules via gdb
- Using kgdb, kdb and the kernel debugger internals
- Linux Kernel Selftests
- 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