linux-2626-support-20080608
[openafs.git] / src / cf / linux-test4.m4
index cc3bc48..65df334 100644 (file)
@@ -81,10 +81,9 @@ AC_DEFUN([LINUX_EXPORTS_INIT_MM], [
   AC_MSG_CHECKING([for exported init_mm])
   AC_CACHE_VAL([ac_cv_linux_exports_init_mm], [
     AC_TRY_KBUILD(
-[#include <linux/modversions.h>],
-[#ifndef __ver_init_mm
-#error init_mm not exported
-#endif],
+[extern struct mm_struct init_mm;],
+[void *address = &init_mm;
+printk("%p\n", address);],
       ac_cv_linux_exports_init_mm=yes,
       ac_cv_linux_exports_init_mm=no)])
   AC_MSG_RESULT($ac_cv_linux_exports_init_mm)])
@@ -512,6 +511,18 @@ AC_DEFUN([LINUX_KERNEL_PAGE_FOLLOW_LINK], [
     CPPFLAGS="$save_CPPFLAGS"])
   AC_MSG_RESULT($ac_cv_linux_kernel_page_follow_link)])
 
+AC_DEFUN([LINUX_KERNEL_HLIST_UNHASHED], [
+  AC_MSG_CHECKING([for hlist_unhashed])
+  AC_CACHE_VAL([ac_cv_linux_kernel_hlist_unhashed], [
+    save_CPPFLAGS="$CPPFLAGS"
+    CPPFLAGS="$CPPFLAGS -Werror-implicit-function-declaration"
+    AC_TRY_KBUILD(
+[#include <linux/list.h>],
+[hlist_unhashed(0);],
+      ac_cv_linux_kernel_hlist_unhashed=yes,
+      ac_cv_linux_kernel_hlist_unhashed=no)
+    CPPFLAGS="$save_CPPFLAGS"])
+  AC_MSG_RESULT($ac_cv_linux_kernel_hlist_unhashed)])
 
 AC_DEFUN([LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_GFP_MASK], [
   AC_MSG_CHECKING([for gfp_mask in struct address_space])
@@ -728,11 +739,28 @@ extern int vfs_statfs(struct dentry *, struct kstatfs *);
       ac_cv_linux_statfs_takes_dentry=no)])
   AC_MSG_RESULT($ac_cv_linux_statfs_takes_dentry)])
 
+
+AC_DEFUN([LINUX_KEY_TYPE_H_EXISTS], [
+  AC_MSG_CHECKING([for linux/key-type.h existance])
+  AC_CACHE_VAL([ac_cv_linux_key_type_h_exists], [
+    AC_TRY_KBUILD(
+[#include <linux/key-type.h>],
+[return;],
+      ac_cv_linux_key_type_h_exists=yes,
+      ac_cv_linux_key_type_h_exists=no)])
+  AC_MSG_RESULT($ac_cv_linux_key_type_h_exists)
+  if test "x$ac_cv_linux_key_type_h_exists" = "xyes"; then
+    AC_DEFINE([KEY_TYPE_H_EXISTS], 1, [define if linux/key-type.h exists])
+  fi])
+
 AC_DEFUN([LINUX_LINUX_KEYRING_SUPPORT], [
   AC_MSG_CHECKING([for linux kernel keyring support])
   AC_CACHE_VAL([ac_cv_linux_keyring_support], [
     AC_TRY_KBUILD(
 [#include <linux/rwsem.h>
+#ifdef KEY_TYPE_H_EXISTS
+#include <linux/key-type.h>
+#endif
 #include <linux/key.h>
 #include <linux/keyctl.h>],
 [#ifdef CONFIG_KEYS
@@ -925,16 +953,6 @@ _fop.splice_read(NULL, NULL, NULL, 0, 0);],
       ac_cv_linux_fs_struct_fop_has_splice=no)])
   AC_MSG_RESULT($ac_cv_linux_fs_struct_fop_has_splice)])
 
-AC_DEFUN([LINUX_KEY_TYPE_H_EXISTS], [
-  AC_MSG_CHECKING([whether linux/key-type.h exists])
-  AC_CACHE_VAL([ac_cv_linux_key_type_h_exists], [
-    AC_TRY_KBUILD(
-[#include <linux/key-type.h>],
-[return;],
-      ac_cv_linux_key_type_h_exists=yes,
-      ac_cv_linux_key_type_h_exists=no)])
-  AC_MSG_RESULT($ac_cv_linux_key_type_h_exists)])
-
 AC_DEFUN([LINUX_HAVE_CURRENT_KERNEL_TIME], [
   AC_MSG_CHECKING([for current_kernel_time()])
   AC_CACHE_VAL([ac_cv_linux_have_current_kernel_time], [
@@ -963,8 +981,73 @@ AC_DEFUN([LINUX_SYSCTL_TABLE_CHECKING], [
   AC_CACHE_VAL([ac_cv_linux_sysctl_table_checking], [
     AC_TRY_KBUILD(
 [#include <linux/sysctl.h>],
-[ sysctl_check_table(NULL);],
-      ac_cv_linux_sysctl_table_checking=yes,
-      ac_cv_linux_sysctl_table_checking=no)])
-  AC_MSG_RESULT($ac_cv_linux_sysctl_table_checking)])
-
+[ extern int sysctl_check_table(int) __attribute__((weak));
+sysctl_check_table(NULL);],
+ ac_cv_linux_sysctl_table_checking=no,
+ ac_cv_linux_sysctl_table_checking=yes)])
+AC_MSG_RESULT($ac_cv_linux_sysctl_table_checking)])
+
+AC_DEFUN([LINUX_HAVE_IGET], [
+  AC_MSG_CHECKING([for linux iget()])
+  AC_CACHE_VAL([ac_cv_linux_have_iget], [
+    save_CPPFLAGS="$CPPFLAGS"
+    CPPFLAGS="$CPPFLAGS -Werror-implicit-function-declaration"
+    AC_TRY_KBUILD(
+[#include <linux/fs.h>],
+[iget(NULL, NULL);],
+      ac_cv_linux_have_iget=yes,
+      ac_cv_linux_have_iget=no)
+    CPPFLAGS="$save_CPPFLAGS"])
+  AC_MSG_RESULT($ac_cv_linux_have_iget)])
+
+AC_DEFUN([LINUX_FS_STRUCT_NAMEIDATA_HAS_PATH], [
+  AC_MSG_CHECKING([for path in struct nameidata])
+  AC_CACHE_VAL([ac_cv_linux_struct_nameidata_has_path], [
+    AC_TRY_KBUILD(
+[#include <linux/namei.h>],
+[struct nameidata _nd;
+printk("%x\n", _nd.path);],
+      ac_cv_linux_struct_nameidata_has_path=yes,
+      ac_cv_linux_struct_nameidata_has_path=no)])
+  AC_MSG_RESULT($ac_cv_linux_struct_nameidata_has_path)])
+
+AC_DEFUN([LINUX_EXPORTS_RCU_READ_LOCK], [
+  AC_MSG_CHECKING([if rcu_read_lock is usable])
+  AC_CACHE_VAL([ac_cv_linux_exports_rcu_read_lock], [
+    AC_TRY_KBUILD(
+[#include <linux/rcupdate.h>],
+[rcu_read_lock();],
+      ac_cv_linux_exports_rcu_read_lock=yes,
+      ac_cv_linux_exports_rcu_read_lock=no)])
+  AC_MSG_RESULT($ac_cv_linux_exports_rcu_read_lock)
+  if test "x$ac_cv_linux_exports_rcu_read_lock" = "xyes"; then
+    AC_DEFINE([EXPORTED_RCU_READ_LOCK], 1, [define if rcu_read_lock() is usable])
+  fi])
+AC_DEFUN([LINUX_EXPORTS_FIND_TASK_BY_PID], [
+  AC_MSG_CHECKING([if find_task_by_pid is usable])
+  AC_CACHE_VAL([ac_cv_linux_exports_find_task_by_pid], [
+    AC_TRY_KBUILD(
+[#include <linux/sched.h>],
+[pid_t p;
+find_task_by_pid(p);],
+      ac_cv_linux_exports_find_task_by_pid=yes,
+      ac_cv_linux_exports_find_task_by_pid=no)])
+  AC_MSG_RESULT($ac_cv_linux_exports_find_task_by_pid)
+  if test "x$ac_cv_linux_exports_find_task_by_pid" = "xyes"; then
+    AC_DEFINE([EXPORTED_FIND_TASK_BY_PID], 1, [define if find_task_by_pid() is usable])
+  fi])
+AC_DEFUN([LINUX_EXPORTS_PROC_ROOT_FS], [
+  AC_MSG_CHECKING([if proc_root_fs is defined and exported])
+  AC_CACHE_VAL([ac_cv_linux_exports_proc_root_fs], [
+    AC_TRY_KBUILD(
+[#include <linux/proc_fs.h>],
+[struct proc_dir_entry *p = proc_root_fs;],
+      ac_cv_linux_exports_proc_root_fs=yes,
+      ac_cv_linux_exports_proc_root_fs=no)])
+  AC_MSG_RESULT($ac_cv_linux_exports_proc_root_fs)
+  if test "x$ac_cv_linux_exports_proc_root_fs" = "xyes"; then
+    AC_DEFINE([EXPORTED_PROC_ROOT_FS], 1, [define if proc_root_fs is exported])
+  fi])