From: wen.yang@linux.dev
To: Joel Granados <joel.granados@kernel.org>
Cc: linux-kernel@vger.kernel.org, Wen Yang <wen.yang@linux.dev>
Subject: [RFC PATCH v3 0/2] sysctl: refactor ctl_table initialization
Date: Mon, 2 Mar 2026 14:32:19 +0800 [thread overview]
Message-ID: <cover.1772432501.git.wen.yang@linux.dev> (raw)
From: Wen Yang <wen.yang@linux.dev>
The main motivation for this series is to avoid treewide patch series.
Historically, changes to how struct ctl_table entries are initialized
(e.g. removing the child field, const-qualifying ctl_table) required
touching hundreds of files across all subsystems. Such series require
the attention of many maintainers, sometimes need to be pulled into
mainline in a special way, and create lots of unnecessary churn.
By introducing a family of CTLTBL_ENTRY_XXX() helper macros in
<linux/sysctl.h>, any future structural changes to struct ctl_table can
be handled in one place — the macro definition — without requiring a
treewide sweep of all callers. Individual subsystem maintainers can also
migrate their sysctl tables to use the macros at their own pace, without
any coordinated effort.
This series:
1. Introduces the CTLTBL_ENTRY_XXX() macros in include/linux/sysctl.h,
allowing callers to initialize struct ctl_table entries indirectly
via the macro instead of assigning each field directly. The macros
use _Generic() for automatic type detection and proc_handler
selection, provide smart defaults (auto address-of, auto maxlen via
sizeof), and include compile-time validation of name, mode, and
handler.
2. Converts kernel/sysctl-test.c to use the new macros as a
demonstration, replacing direct struct ctl_table field assignments
with CTLTBL_ENTRY_XXX() calls. Four new tests are added to cover the
previously untested variants (CTLTBL_ENTRY_V, VN, VNM, VNMH), bringing
the total to 16 passing tests.
Thanks Joel's suggestions and guidance:
[1] https://sysctl-dev-rtd.readthedocs.io/en/latest/notes/ctltable_entry_macro.html#table-entry-macro
[2] https://lore.kernel.org/all/psot4oeauxi3yyj2w4ajm3tfgtcsvao4rhv5sgd5s6ymmjgojk@p3vrj3qluban/
Wen Yang (2):
sysctl: introduce CTLTBL_ENTRY_XXX() helper macros
sysctl: convert kernel/sysctl-test.c to use CTLTBL_ENTRY_XXX()
include/linux/sysctl.h | 302 +++++++++++++++++++++++++++++++++++++++++
kernel/sysctl-test.c | 240 ++++++++++++++++++--------------
kernel/sysctl.c | 2 +
3 files changed, 445 insertions(+), 99 deletions(-)
--
2.25.1
next reply other threads:[~2026-03-02 6:32 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-02 6:32 wen.yang [this message]
2026-03-02 6:32 ` [RFC PATCH v3 1/2] sysctl: introduce CTLTBL_ENTRY_XXX() helper macros wen.yang
2026-03-02 6:32 ` [RFC PATCH v3 2/2] sysctl: convert kernel/sysctl-test.c to use CTLTBL_ENTRY_XXX() wen.yang
2026-03-04 23:29 ` kernel test robot
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=cover.1772432501.git.wen.yang@linux.dev \
--to=wen.yang@linux.dev \
--cc=joel.granados@kernel.org \
--cc=linux-kernel@vger.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.