From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org
Cc: linux-doc@vger.kernel.org, linux-api@vger.kernel.org,
tools@kernel.org, Sasha Levin <sashal@kernel.org>
Subject: [RFC v3 0/4] Kernel API Specification Framework with kerneldoc integration
Date: Fri, 11 Jul 2025 07:42:44 -0400 [thread overview]
Message-ID: <20250711114248.2288591-1-sashal@kernel.org> (raw)
This patch series introduces a framework for formally specifying kernel
APIs, addressing the long-standing challenge of maintaining stable
interfaces between the kernel and user-space programs. As outlined in
previous discussions about kernel ABI stability, the lack of
machine-readable API specifications has led to inadvertent breakages and
inconsistent validation across system calls and IOCTLs.
The framework represents a fundamental shift from macro-based API
specifications to kerneldoc integration. Instead of requiring developers
to write specifications using C macros separate from documentation, the
framework now leverages the existing kerneldoc infrastructure. This
unification means developers write API specifications as part of their
regular documentation workflow, with the build system automatically
generating machine-readable C macros from these comments.
Changes since RFC v2:
1. Kerneldoc Integration: transition from C macros to kerneldoc
comments.
2. Structured Parameter Specifications: Support for complex data
structures with field-level constraints, including ranges, enums, and
validation groups.
3. Hybrid Documentation Approach: Core API specifications remain inline
with the implementation for tight coupling, while extended documentation
(examples, detailed notes, complex constraints) can be maintained in
separate files under Documentation/.
Sasha Levin (4):
kernel/api: introduce kernel API specification framework
kernel/api: enable kerneldoc-based API specifications
mm/mlock: add API specification for mlock
kernel/sched: add specs for sys_sched_setattr()
Documentation/admin-guide/kernel-api-spec.rst | 507 ++++++
Documentation/userspace-api/syscalls/mlock.rst| 118 ++
MAINTAINERS | 9 +
arch/um/kernel/dyn.lds.S | 3 +
arch/um/kernel/uml.lds.S | 3 +
arch/x86/kernel/vmlinux.lds.S | 3 +
include/asm-generic/vmlinux.lds.h | 20 +
include/linux/kernel_api_spec.h | 1527 +++++++++++++++++
include/linux/syscall_api_spec.h | 137 ++
include/linux/syscalls.h | 38 +
init/Kconfig | 2 +
kernel/Makefile | 1 +
kernel/api/Kconfig | 35 +
kernel/api/Makefile | 26 +
kernel/api/kernel_api_spec.c | 1122 ++++++++++++
kernel/sched/syscalls.c | 168 +-
mm/mlock.c | 85 +
scripts/Makefile.build | 28 +
scripts/generate_api_specs.sh | 59 +
scripts/kernel-doc.py | 5 +
scripts/lib/kdoc/kdoc_apispec.py | 623 +++++++
scripts/lib/kdoc/kdoc_output.py | 5 +-
scripts/lib/kdoc/kdoc_parser.py | 54 +-
23 files changed, 4574 insertions(+), 4 deletions(-)
create mode 100644 Documentation/admin-guide/kernel-api-spec.rst
create mode 100644 Documentation/userspace-api/syscalls/mlock.rst
create mode 100644 include/linux/kernel_api_spec.h
create mode 100644 include/linux/syscall_api_spec.h
create mode 100644 kernel/api/Kconfig
create mode 100644 kernel/api/Makefile
create mode 100644 kernel/api/kernel_api_spec.c
create mode 100755 scripts/generate_api_specs.sh
create mode 100644 scripts/lib/kdoc/kdoc_apispec.py
--
2.39.5
next reply other threads:[~2025-07-11 11:42 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-11 11:42 Sasha Levin [this message]
2025-07-11 11:42 ` [RFC v3 1/4] kernel/api: introduce kernel API specification framework Sasha Levin
2025-07-16 7:21 ` Askar Safin
2025-08-01 13:53 ` Sasha Levin
2025-07-11 11:42 ` [RFC v3 2/4] kernel/api: enable kerneldoc-based API specifications Sasha Levin
2025-07-21 0:55 ` Randy Dunlap
2025-07-21 2:54 ` Sasha Levin
2025-07-21 3:17 ` Randy Dunlap
2025-07-11 11:42 ` [RFC v3 3/4] mm/mlock: add API specification for mlock Sasha Levin
2025-07-11 11:42 ` [RFC v3 4/4] kernel/sched: add specs for sys_sched_setattr() Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250711114248.2288591-1-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=linux-api@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tools@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).