xref: /freebsd-src/sys/contrib/openzfs/config/kernel-register_sysctl_table.m4 (revision 17aab35a77a1b1bf02fc85bb8ffadccb0ca5006d)
1315ee00fSMartin Matuskadnl #
2315ee00fSMartin Matuskadnl # Linux 6.5 removes register_sysctl_table
3315ee00fSMartin Matuskadnl #
4315ee00fSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_REGISTER_SYSCTL_TABLE], [
5315ee00fSMartin Matuska	ZFS_LINUX_TEST_SRC([has_register_sysctl_table], [
6315ee00fSMartin Matuska		#include <linux/sysctl.h>
7315ee00fSMartin Matuska
8315ee00fSMartin Matuska		static struct ctl_table dummy_table[] = {
9315ee00fSMartin Matuska			{}
10315ee00fSMartin Matuska		};
11315ee00fSMartin Matuska
12315ee00fSMartin Matuska    ],[
13315ee00fSMartin Matuska		struct ctl_table_header *h
14315ee00fSMartin Matuska			__attribute((unused)) = register_sysctl_table(dummy_table);
15315ee00fSMartin Matuska    ])
16315ee00fSMartin Matuska])
17315ee00fSMartin Matuska
18315ee00fSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_REGISTER_SYSCTL_TABLE], [
19315ee00fSMartin Matuska	AC_MSG_CHECKING([whether register_sysctl_table exists])
20315ee00fSMartin Matuska	ZFS_LINUX_TEST_RESULT([has_register_sysctl_table], [
21315ee00fSMartin Matuska		AC_MSG_RESULT([yes])
22315ee00fSMartin Matuska		AC_DEFINE(HAVE_REGISTER_SYSCTL_TABLE, 1,
23315ee00fSMartin Matuska			[register_sysctl_table exists])
24315ee00fSMartin Matuska	],[
25315ee00fSMartin Matuska		AC_MSG_RESULT([no])
26315ee00fSMartin Matuska	])
27315ee00fSMartin Matuska])
2829dc9349SMartin Matuska
2929dc9349SMartin Matuskadnl #
3029dc9349SMartin Matuskadnl # Linux 6.11 register_sysctl() enforces that sysctl tables no longer
3129dc9349SMartin Matuskadnl # supply a sentinel end-of-table element. 6.6 introduces
3229dc9349SMartin Matuskadnl # register_sysctl_sz() to enable callers to choose, so we use it if
3329dc9349SMartin Matuskadnl # available for backward compatibility.
3429dc9349SMartin Matuskadnl #
3529dc9349SMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_REGISTER_SYSCTL_SZ], [
3629dc9349SMartin Matuska	ZFS_LINUX_TEST_SRC([has_register_sysctl_sz], [
3729dc9349SMartin Matuska		#include <linux/sysctl.h>
3829dc9349SMartin Matuska	],[
39*17aab35aSMartin Matuska		struct ctl_table test_table[] __attribute__((unused)) = {{}};
4029dc9349SMartin Matuska		register_sysctl_sz("", test_table, 0);
4129dc9349SMartin Matuska	])
4229dc9349SMartin Matuska])
4329dc9349SMartin Matuska
4429dc9349SMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_REGISTER_SYSCTL_SZ], [
4529dc9349SMartin Matuska	AC_MSG_CHECKING([whether register_sysctl_sz exists])
4629dc9349SMartin Matuska	ZFS_LINUX_TEST_RESULT([has_register_sysctl_sz], [
4729dc9349SMartin Matuska		AC_MSG_RESULT([yes])
4829dc9349SMartin Matuska		AC_DEFINE(HAVE_REGISTER_SYSCTL_SZ, 1,
4929dc9349SMartin Matuska			[register_sysctl_sz exists])
5029dc9349SMartin Matuska	],[
5129dc9349SMartin Matuska		AC_MSG_RESULT([no])
5229dc9349SMartin Matuska	])
5329dc9349SMartin Matuska])
5429dc9349SMartin Matuska
5529dc9349SMartin Matuskadnl #
5629dc9349SMartin Matuskadnl # Linux 6.11 makes const the ctl_table arg of proc_handler
5729dc9349SMartin Matuskadnl #
5829dc9349SMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_PROC_HANDLER_CTL_TABLE_CONST], [
5929dc9349SMartin Matuska	ZFS_LINUX_TEST_SRC([has_proc_handler_ctl_table_const], [
6029dc9349SMartin Matuska		#include <linux/sysctl.h>
6129dc9349SMartin Matuska
6229dc9349SMartin Matuska		static int test_handler(
6329dc9349SMartin Matuska		    const struct ctl_table *ctl __attribute((unused)),
6429dc9349SMartin Matuska		    int write __attribute((unused)),
6529dc9349SMartin Matuska		    void *buffer __attribute((unused)),
6629dc9349SMartin Matuska		    size_t *lenp __attribute((unused)),
6729dc9349SMartin Matuska		    loff_t *ppos __attribute((unused)))
6829dc9349SMartin Matuska		{
6929dc9349SMartin Matuska			return (0);
7029dc9349SMartin Matuska		}
7129dc9349SMartin Matuska	], [
7229dc9349SMartin Matuska		proc_handler *ph __attribute((unused)) =
7329dc9349SMartin Matuska		    &test_handler;
7429dc9349SMartin Matuska	])
7529dc9349SMartin Matuska])
7629dc9349SMartin Matuska
7729dc9349SMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_PROC_HANDLER_CTL_TABLE_CONST], [
7829dc9349SMartin Matuska	AC_MSG_CHECKING([whether proc_handler ctl_table arg is const])
7929dc9349SMartin Matuska	ZFS_LINUX_TEST_RESULT([has_proc_handler_ctl_table_const], [
8029dc9349SMartin Matuska		AC_MSG_RESULT([yes])
8129dc9349SMartin Matuska		AC_DEFINE(HAVE_PROC_HANDLER_CTL_TABLE_CONST, 1,
8229dc9349SMartin Matuska		    [proc_handler ctl_table arg is const])
8329dc9349SMartin Matuska	], [
8429dc9349SMartin Matuska		AC_MSG_RESULT([no])
8529dc9349SMartin Matuska	])
8629dc9349SMartin Matuska])
87