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