+
+AC_DEFUN([LINUX_AIO_NONVECTOR],
+ [AC_CHECK_LINUX_BUILD([for non-vectorized aio kernel functions],
+ [ac_cv_linux_aio_nonvector],
+ [#include <linux/fs.h>],
+ [extern ssize_t
+ generic_file_aio_read(struct kiocb *, char __user *,
+ size_t, loff_t);],
+ [LINUX_HAS_NONVECTOR_AIO],
+ [define if kernel functions like generic_file_aio_read use
+ non-vectorized i/o],
+ [])
+ ])
+
AC_DEFUN([LINUX_EXPORTS_TASKLIST_LOCK], [
AC_CHECK_LINUX_BUILD([for exported tasklist_lock],
[ac_cv_linux_exports_tasklist_lock],
[#include <linux/rwsem.h>
#include <linux/key.h> ],
[struct task_struct *t=NULL;
- (void) key_alloc(NULL, NULL, 0, 0, t, 0, 0);],
+ struct key k = {};
+ (void) key_alloc(NULL, NULL, k.uid, k.gid, t, 0, 0);],
[KEY_ALLOC_NEEDS_STRUCT_TASK],
[define if key_alloc takes a struct task *],
[-Werror -Wno-pointer-arith])
[#include <linux/rwsem.h>
#include <linux/key.h>],
[struct cred *c = NULL;
- (void) key_alloc(NULL, NULL, 0, 0, c, 0, 0);],
+ struct key k = {};
+ (void) key_alloc(NULL, NULL, k.uid, k.gid, c, 0, 0);],
[KEY_ALLOC_NEEDS_CRED],
[define if key_alloc takes credentials],
[-Werror -Wno-pointer-arith])
])
+AC_DEFUN([LINUX_STRUCT_KEY_UID_IS_KUID_T], [
+ AC_CHECK_LINUX_BUILD([if struct key.uid is kuid_t],
+ [ac_cv_struct_key_uid_is_kuid_t],
+ [#include <linux/rwsem.h>
+ #include <linux/key.h>],
+ [struct key k = {};
+ kuid_t *kuid = &k.uid;],
+ [STRUCT_KEY_UID_IS_KUID_T],
+ [define if struct key.uid is kuid_t])
+])
+
+
AC_DEFUN([LINUX_INIT_WORK_HAS_DATA], [
AC_CHECK_LINUX_BUILD([whether INIT_WORK has a _data argument],
[ac_cv_linux_init_work_has_data],
])
+AC_DEFUN([LINUX_HLIST_ITERATOR_NO_NODE], [
+ AC_CHECK_LINUX_BUILD([whether hlist iterators don't need a node parameter],
+ [ac_cv_linux_hlist_takes_no_node],
+ [#include <linux/list.h>
+ #include <linux/fs.h>],
+ [struct dentry *d = NULL, *cur;
+ struct inode *ip;
+ hlist_for_each_entry(cur, &ip->i_dentry, d_alias) { }
+ ],
+ [HLIST_ITERATOR_NO_NODE],
+ [define if hlist iterators don't need a node parameter],
+ [])
+])
+
+
AC_DEFUN([LINUX_IOP_I_CREATE_TAKES_BOOL], [
AC_CHECK_LINUX_BUILD([whether inode_operations.create takes a bool],
[ac_cv_linux_func_i_create_takes_bool],
[define if your dops.d_revalidate takes an unsigned int argument],
[-Werror])
])
+
+
+AC_DEFUN([LINUX_IOP_LOOKUP_TAKES_UNSIGNED], [
+ AC_CHECK_LINUX_BUILD([whether inode operation lookup takes an unsigned int],
+ [ac_cv_linux_func_lookup_takes_unsigned],
+ [#include <linux/fs.h>
+ #include <linux/namei.h>],
+ [struct inode_operations iops;
+ struct dentry *look(struct inode *i, struct dentry *d, unsigned int j) { return NULL; };
+ iops.lookup = look;],
+ [IOP_LOOKUP_TAKES_UNSIGNED],
+ [define if your iops.lookup takes an unsigned int argument],
+ [-Werror])
+])