sysctl: move sysctl type to ctl_table_header
authorThomas Weißschuh <linux@weissschuh.net>
Fri, 22 Mar 2024 17:05:57 +0000 (18:05 +0100)
committerJoel Granados <j.granados@samsung.com>
Wed, 24 Apr 2024 07:43:54 +0000 (09:43 +0200)
commit4a7b29f6509470a7e63dd67e516268fbef226194
treef6373f1d592729aff778510290d68065e8160e13
parenteb32d3adef461bc523c97321f19209f55512ee4a
sysctl: move sysctl type to ctl_table_header

Move the SYSCTL_TABLE_TYPE_{DEFAULT,PERMANENTLY_EMPTY} enums from
ctl_table to ctl_table_header.
Removing the mutable member is necessary to constify static instances
of struct ctl_table.

Move the initialization of the sysctl_mount_point type into
init_header() where all the other header fields are also initialized.

As a side-effect the memory usage of the sysctl core is reduced.
Each ctl_table_header instance can manage multiple ctl_table instances
and is only allocated when the table is actually registered.
This saves 8 bytes of memory per ctl_table on 64bit, 4 due to the enum
field itself and 4 due to padding.

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Signed-off-by: Joel Granados <j.granados@samsung.com>
fs/proc/proc_sysctl.c
include/linux/sysctl.h