AC_DEFUN([LINUX_RECALC_SIGPENDING_ARG_TYPE], [
AC_CHECK_LINUX_BUILD([for recalc_sigpending arg type],
[ac_cv_linux_func_recalc_sigpending_takes_void],
- [#include <linux/sched.h>],
+[#include <linux/sched.h>
+#ifdef HAVE_LINUX_SCHED_SIGNAL_H
+#include <linux/sched/signal.h>
+#endif],
[recalc_sigpending();],
[RECALC_SIGPENDING_TAKES_VOID],
[define if your recalc_sigpending takes void],
AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGNAL_RLIM], [
AC_CHECK_LINUX_BUILD([for signal->rlim in struct task_struct],
[ac_cv_linux_sched_struct_task_struct_has_signal_rlim],
- [#include <linux/sched.h>],
+[#include <linux/sched.h>
+#ifdef HAVE_LINUX_SCHED_SIGNAL_H
+#include <linux/sched/signal.h>
+#endif],
[struct task_struct _tsk; printk("%d\n", _tsk.signal->rlim);],
[STRUCT_TASK_STRUCT_HAS_SIGNAL_RLIM],
[define if your struct task_struct has signal->rlim],
[])
])
+AC_DEFUN([LINUX_KERNEL_PAGEVEC_INIT_COLD_ARG], [
+ AC_CHECK_LINUX_BUILD([for 2nd argument in pagevec_init found in pre-4.15 kernels],
+ [ac_cv_linux_kernel_pagevec_init_cold_arg],
+ [#include <linux/pagevec.h>],
+ [pagevec_init(0,0);],
+ [PAGEVEC_INIT_COLD_ARG],
+ [define if your kernel uses 2 arguments for pagevec_init],
+ [])
+])
+
AC_DEFUN([LINUX_KERNEL_SOCK_CREATE], [
AC_CHECK_LINUX_BUILD([for 5th argument in sock_create found in some SELinux kernels],
[ac_cv_linux_kernel_sock_create_v],
[])
])
-
+AC_DEFUN([LINUX_IATTR_64BIT_TIME], [
+ AC_CHECK_LINUX_BUILD([whether struct iattr->ia_ctime takes struct timespec64 or 32-bit struct timespec],
+ [ac_cv_linux_func_iattr_ctime_takes_timespec64],
+ [#include <linux/fs.h>
+ #include <linux/timekeeping.h>],
+ [struct iattr _attrs;
+ #if defined(HAVE_LINUX_KTIME_GET_COARSE_REAL_TS64)
+ ktime_get_coarse_real_ts64(&_attrs.ia_ctime);
+ #else
+ _attrs.ia_ctime = current_kernel_time64();
+ #endif
+ ],
+ [IATTR_TAKES_64BIT_TIME],
+ [define if struct iattr->ia_ctime takes struct timespec64],
+ [])
+])
AC_DEFUN([LINUX_AOP_WRITEBACK_CONTROL], [
AC_CHECK_LINUX_BUILD([whether aop.writepage takes a writeback_control],
[-Werror])
])
+AC_DEFUN([LINUX_IOP_GETATTR_TAKES_PATH_STRUCT], [
+ AC_CHECK_LINUX_BUILD([whether 4.11+ inode.i_op->getattr takes a struct path argument],
+ [ac_cv_linux_iop_getattr_takes_path_struct],
+ [#include <linux/fs.h>
+ int _getattr(const struct path *path, struct kstat *stat, u32 request_mask,
+ unsigned int sync_mode) {return 0;};
+ struct inode_operations _i_ops;],
+ [_i_ops.getattr = _getattr;],
+ [IOP_GETATTR_TAKES_PATH_STRUCT],
+ [define if 4.11+ inode.i_op->getattr takes a struct path argument],
+ [-Werror])
+])
AC_DEFUN([LINUX_IOP_MKDIR_TAKES_UMODE_T], [
AC_CHECK_LINUX_BUILD([whether inode.i_op->mkdir takes a umode_t argument],
[define if your d_invalidate returns void],
[])
])
+
+AC_DEFUN([LINUX_KERNEL_READ_OFFSET_IS_LAST], [
+ AC_CHECK_LINUX_BUILD([whether offset is the last argument to kernel_read],
+ [ac_cv_linux_func_kernel_read_offset_is_last],
+ [#include <linux/fs.h>],
+ [
+ ssize_t kernel_read(struct file *, void *, size_t, loff_t *);
+ ],
+ [KERNEL_READ_OFFSET_IS_LAST],
+ [define if your kernel_read has offset as the last argument],
+ [])
+])