aboutsummaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2010-03-04 12:14:56 -0800
committerBrian Behlendorf <[email protected]>2010-03-04 12:14:56 -0800
commit3977f8370f8caf57600deff6795894410f0e715e (patch)
treee03e58e08aa6e97cbeeb6e9c7fd2ce6ae510eb82 /config
parent694921bc49b3267b3fc0bc3a9e753fbc206e1a61 (diff)
Linux 2.6.32 compat, proc_handler() API change
As of linux-2.6.32 the 'struct file *filp' argument was dropped from the proc_handle() prototype. It was apparently unused _almost_ everywhere in the kernel and this was simply cleanup. I've added a new SPL_AC_5ARGS_PROC_HANDLER autoconf check for this and the proper compat macros to correctly define the prototypes and some helper functions. It's not pretty but API compat changes rarely are.
Diffstat (limited to 'config')
-rw-r--r--config/spl-build.m420
1 files changed, 20 insertions, 0 deletions
diff --git a/config/spl-build.m4 b/config/spl-build.m4
index 9fa7bc811..e2e2112e7 100644
--- a/config/spl-build.m4
+++ b/config/spl-build.m4
@@ -72,6 +72,7 @@ AC_DEFUN([SPL_AC_CONFIG_KERNEL], [
SPL_AC_CRED_STRUCT
SPL_AC_GROUPS_SEARCH
SPL_AC_PUT_TASK_STRUCT
+ SPL_AC_5ARGS_PROC_HANDLER
])
AC_DEFUN([SPL_AC_MODULE_SYMVERS], [
@@ -1371,3 +1372,22 @@ AC_DEFUN([SPL_AC_PUT_TASK_STRUCT], [
[__put_task_struct() is available])],
[])
])
+
+dnl #
+dnl # 2.6.32 API change,
+dnl # Unused 'struct file *' removed from prototype.
+dnl #
+AC_DEFUN([SPL_AC_5ARGS_PROC_HANDLER], [
+ AC_MSG_CHECKING([whether proc_handler() wants 5 args])
+ SPL_LINUX_TRY_COMPILE([
+ #include <linux/sysctl.h>
+ ],[
+ proc_dostring(NULL, 0, NULL, NULL, NULL);
+ ],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_5ARGS_PROC_HANDLER, 1,
+ [proc_handler() wants 5 args])
+ ],[
+ AC_MSG_RESULT(no)
+ ])
+])