+AC_DEFUN([LINUX_EXPORTS_TASKLIST_LOCK], [
+ AC_MSG_CHECKING([for exported tasklist_lock])
+ AC_CACHE_VAL([ac_cv_linux_exports_tasklist_lock], [
+ AC_TRY_KBUILD(
+[
+#include <linux/sched.h>],
+[
+extern rwlock_t tasklist_lock __attribute__((weak));
+read_lock(&tasklist_lock);
+],
+ ac_cv_linux_exports_tasklist_lock=yes,
+ ac_cv_linux_exports_tasklist_lock=no)])
+ AC_MSG_RESULT($ac_cv_linux_exports_tasklist_lock)])
+
+
AC_DEFUN([LINUX_CONFIG_H_EXISTS], [
AC_MSG_CHECKING([for linux/config.h existance])
AC_CACHE_VAL([ac_cv_linux_config_h_exists], [
ac_cv_linux_completion_h_exists=no)])
AC_MSG_RESULT($ac_cv_linux_completion_h_exists)])
+AC_DEFUN([LINUX_EXPORTFS_H_EXISTS], [
+ AC_MSG_CHECKING([for linux/exportfs.h existence])
+ AC_CACHE_VAL([ac_cv_linux_exportfs_h_exists], [
+ AC_TRY_KBUILD(
+[#include <linux/exportfs.h>],
+[return;],
+ ac_cv_linux_exportfs_h_exists=yes,
+ ac_cv_linux_exportfs_h_exists=no)])
+ AC_MSG_RESULT($ac_cv_linux_exportfs_h_exists)])
AC_DEFUN([LINUX_DEFINES_FOR_EACH_PROCESS], [
AC_MSG_CHECKING([for defined for_each_process])
AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_parent)])
+AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_TGID], [
+ AC_MSG_CHECKING([for tgid in struct task_struct])
+ AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_tgid], [
+ AC_TRY_KBUILD(
+[#include <linux/sched.h>],
+[struct task_struct _tsk;
+printk("%d\n", _tsk.tgid);],
+ ac_cv_linux_sched_struct_task_struct_has_tgid=yes,
+ ac_cv_linux_sched_struct_task_struct_has_tgid=no)])
+ AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_tgid)])
+
+
AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_REAL_PARENT], [
AC_MSG_CHECKING([for real_parent in struct task_struct])
AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_real_parent], [
AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_exit_state)])
+AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_THREAD_INFO], [
+ AC_MSG_CHECKING([for thread_info in struct task_struct])
+ AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_thread_info], [
+ AC_TRY_KBUILD(
+[#include <linux/sched.h>],
+[struct task_struct _tsk;
+printk("%d\n", _tsk.thread_info);],
+ ac_cv_linux_sched_struct_task_struct_has_thread_info=yes,
+ ac_cv_linux_sched_struct_task_struct_has_thread_info=no)])
+ AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_thread_info)])
+
+
AC_DEFUN([LINUX_FS_STRUCT_SUPER_HAS_ALLOC_INODE], [
AC_MSG_CHECKING([for alloc_inode in struct super_operations])
AC_CACHE_VAL([ac_cv_linux_fs_struct_super_has_alloc_inode], [
AC_MSG_RESULT($ac_cv_linux_fs_struct_super_has_alloc_inode)])
+AC_DEFUN([LINUX_KERNEL_POSIX_LOCK_FILE_WAIT_ARG], [
+ AC_MSG_CHECKING([for 3rd argument in posix_lock_file found in new kernels])
+ AC_CACHE_VAL([ac_cv_linux_kernel_posix_lock_file_wait_arg], [
+ AC_TRY_KBUILD(
+[#include <linux/fs.h>],
+[posix_lock_file(0,0,0);],
+ ac_cv_linux_kernel_posix_lock_file_wait_arg=yes,
+ ac_cv_linux_kernel_posix_lock_file_wait_arg=no)])
+ AC_MSG_RESULT($ac_cv_linux_kernel_posix_lock_file_wait_arg)])
+
+
AC_DEFUN([LINUX_KERNEL_SOCK_CREATE], [
AC_MSG_CHECKING([for 5th argument in sock_create found in some SELinux kernels])
AC_CACHE_VAL([ac_cv_linux_kernel_sock_create_v], [
AC_MSG_RESULT($ac_cv_linux_func_i_permission_takes_nameidata)])
+AC_DEFUN([LINUX_IOP_I_PUT_LINK_TAKES_COOKIE], [
+ AC_MSG_CHECKING([whether inode_operations.put_link takes an opaque cookie])
+ AC_CACHE_VAL([ac_cv_linux_func_i_put_link_takes_cookie], [
+ AC_TRY_KBUILD(
+[#include <linux/fs.h>
+#include <linux/namei.h>],
+[struct inode _inode;
+struct dentry _dentry;
+struct nameidata _nameidata;
+void *cookie;
+(void)_inode.i_op->put_link(&_dentry, &_nameidata, cookie);],
+ ac_cv_linux_func_i_put_link_takes_cookie=yes,
+ ac_cv_linux_func_i_put_link_takes_cookie=no)])
+ AC_MSG_RESULT($ac_cv_linux_func_i_put_link_takes_cookie)])
+
+
AC_DEFUN([LINUX_DOP_D_REVALIDATE_TAKES_NAMEIDATA], [
AC_MSG_CHECKING([whether dentry_operations.d_revalidate takes a nameidata])
AC_CACHE_VAL([ac_cv_linux_func_d_revalidate_takes_nameidata], [
ac_cv_linux_fs_struct_fop_has_flock=yes,
ac_cv_linux_fs_struct_fop_has_flock=no)])
AC_MSG_RESULT($ac_cv_linux_fs_struct_fop_has_flock)])
+
+AC_DEFUN([LINUX_REGISTER_SYSCTL_TABLE_NOFLAG], [
+ AC_MSG_CHECKING([whether register_sysctl_table has an insert_at_head flag argument])
+ AC_CACHE_VAL([ac_cv_linux_register_sysctl_table_noflag], [
+ AC_TRY_KBUILD(
+[#include <linux/sysctl.h>],
+[ctl_table *t;
+register_sysctl_table (t);],
+ ac_cv_linux_register_sysctl_table_noflag=yes,
+ ac_cv_linux_register_sysctl_table_noflag=no)])
+ AC_MSG_RESULT($ac_cv_linux_register_sysctl_table_noflag)])
+
+AC_DEFUN([LINUX_FOP_F_FLUSH_TAKES_FL_OWNER_T], [
+ AC_MSG_CHECKING([whether file_operations.flush takes a fl_owner_t])
+ AC_CACHE_VAL([ac_cv_linux_func_f_flush_takes_fl_owner_t], [
+ AC_TRY_KBUILD(
+[#include <linux/fs.h>],
+[struct inode _inode;
+struct file _file;
+fl_owner_t id;
+(void)_inode.i_fop->flush(&_file, &id);],
+ ac_cv_linux_func_f_flush_takes_fl_owner_t=yes,
+ ac_cv_linux_func_f_flush_takes_fl_owner_t=no)])
+ AC_MSG_RESULT($ac_cv_linux_func_f_flush_takes_fl_owner_t)])
+
+AC_DEFUN([LINUX_HAVE_KMEM_CACHE_T], [
+ AC_MSG_CHECKING([whether kmem_cache_t exists])
+ AC_CACHE_VAL([ac_cv_linux_have_kmem_cache_t], [
+ AC_TRY_KBUILD(
+[#include <linux/slab.h>],
+[kmem_cache_t *k;],
+ ac_cv_linux_have_kmem_cache_t=yes,
+ ac_cv_linux_have_kmem_cache_t=no)])
+ AC_MSG_RESULT($ac_cv_linux_have_kmem_cache_t)])
+
+AC_DEFUN([LINUX_KMEM_CACHE_CREATE_TAKES_DTOR], [
+ AC_MSG_CHECKING([whether kmem_cache_create takes a destructor argument])
+ AC_CACHE_VAL([ac_cv_linux_kmem_cache_create_takes_dtor], [
+ AC_TRY_KBUILD(
+[#include <linux/slab.h>],
+[kmem_cache_create(NULL, 0, 0, 0, NULL, NULL);],
+ ac_cv_linux_kmem_cache_create_takes_dtor=yes,
+ ac_cv_linux_kmem_cache_create_takes_dtor=no)])
+ AC_MSG_RESULT($ac_cv_linux_kmem_cache_create_takes_dtor)])
+
+AC_DEFUN([LINUX_FS_STRUCT_FOP_HAS_SENDFILE], [
+ AC_MSG_CHECKING([for sendfile in struct file_operations])
+ AC_CACHE_VAL([ac_cv_linux_fs_struct_fop_has_sendfile], [
+ AC_TRY_KBUILD(
+[#include <linux/fs.h>],
+[struct file_operations _fop;
+_fop.sendfile(NULL, NULL, 0, 0, NULL);],
+ ac_cv_linux_fs_struct_fop_has_sendfile=yes,
+ ac_cv_linux_fs_struct_fop_has_sendfile=no)])
+ AC_MSG_RESULT($ac_cv_linux_fs_struct_fop_has_sendfile)])
+
+AC_DEFUN([LINUX_HAVE_SVC_ADDR_IN], [
+ AC_MSG_CHECKING([whether svc_addr_in exists])
+ AC_CACHE_VAL([ac_cv_linux_have_svc_addr_in], [
+ AC_TRY_KBUILD(
+[#include <linux/sunrpc/svc.h>],
+[svc_addr_in(NULL);],
+ ac_cv_linux_have_svc_addr_in=yes,
+ ac_cv_linux_have_svc_addr_in=no)])
+ AC_MSG_RESULT($ac_cv_linux_have_svc_addr_in)])
+
+AC_DEFUN([LINUX_FS_STRUCT_FOP_HAS_SPLICE], [
+ AC_MSG_CHECKING([for splice_write and splice_read in struct file_operations])
+ AC_CACHE_VAL([ac_cv_linux_fs_struct_fop_has_splice], [
+ AC_TRY_KBUILD(
+[#include <linux/fs.h>],
+[struct file_operations _fop;
+_fop.splice_write(NULL, NULL, NULL, 0, 0);
+_fop.splice_read(NULL, NULL, NULL, 0, 0);],
+ ac_cv_linux_fs_struct_fop_has_splice=yes,
+ ac_cv_linux_fs_struct_fop_has_splice=no)])
+ AC_MSG_RESULT($ac_cv_linux_fs_struct_fop_has_splice)])
+