)
LINUX_KERNEL_COMPILE_WORKS
+ LINUX_KBUILD_USES_EXTRA_CFLAGS
+ LINUX_HAVE_CURRENT_KERNEL_TIME
+ LINUX_KMEM_CACHE_INIT
LINUX_HAVE_KMEM_CACHE_T
LINUX_KMEM_CACHE_CREATE_TAKES_DTOR
LINUX_CONFIG_H_EXISTS
LINUX_KERNEL_SELINUX
LINUX_KERNEL_SOCK_CREATE
LINUX_KERNEL_PAGE_FOLLOW_LINK
+ LINUX_KEY_TYPE_H_EXISTS
LINUX_NEED_RHCONFIG
LINUX_RECALC_SIGPENDING_ARG_TYPE
LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_PARENT
LINUX_GENERIC_FILE_AIO_READ
LINUX_INIT_WORK_HAS_DATA
LINUX_REGISTER_SYSCTL_TABLE_NOFLAG
+ LINUX_SYSCTL_TABLE_CHECKING
LINUX_EXPORTS_SYS_CHDIR
LINUX_EXPORTS_SYS_CLOSE
LINUX_EXPORTS_SYS_OPEN
if test "x$ac_cv_linux_exportfs_h_exists" = "xyes"; then
AC_DEFINE(EXPORTFS_H_EXISTS, 1, [define if linux/exportfs.h exists])
fi
+ if test "x$ac_cv_linux_key_type_h_exists" = "xyes" ; then
+ AC_DEFINE(KEY_TYPE_H_EXISTS, 1, [define if key-type.h exists])
+ fi
if test "x$ac_cv_linux_defines_for_each_process" = "xyes" ; then
AC_DEFINE(DEFINED_FOR_EACH_PROCESS, 1, [define if for_each_process defined])
fi
if test "x$ac_cv_linux_register_sysctl_table_noflag" = "xyes" ; then
AC_DEFINE(REGISTER_SYSCTL_TABLE_NOFLAG, 1, [define if register_sysctl_table has no insert_at head flag])
fi
+ if test "x$ac_cv_linux_sysctl_table_checking" = "xyes" ; then
+ AC_DEFINE(SYSCTL_TABLE_CHECKING, 1, [define if your kernel has sysctl table checking])
+ fi
if test "x$ac_cv_linux_exports_tasklist_lock" = "xyes" ; then
AC_DEFINE(EXPORTED_TASKLIST_LOCK, 1, [define if tasklist_lock exported])
fi
if test "x$ac_cv_linux_have_kmem_cache_t" = "xyes" ; then
AC_DEFINE(HAVE_KMEM_CACHE_T, 1, [define if kmem_cache_t exists])
fi
+ if test "x$ac_cv_linux_kmem_cache_init" = "xyes" ; then
+ AC_DEFINE(KMEM_CACHE_INIT, 1, [define for new kmem_cache init function parameters])
+ fi
+ if test "x$ac_cv_linux_have_current_kernel_time" = "xyes" ; then
+ AC_DEFINE(HAVE_CURRENT_KERNEL_TIME, 1, [define if current_kernel_time() exists])
+ fi
if test "x$ac_cv_linux_have_kmem_cache_t" = "xyes" ; then
AC_DEFINE(KMEM_CACHE_TAKES_DTOR, 1, [define if kmem_cache_create takes a destructor argument])
fi
#define afs_hz HZ
#include "h/sched.h"
+#if defined(HAVE_CURRENT_KERNEL_TIME)
+static inline time_t osi_Time(void) {
+ struct timespec xtime;
+ xtime = current_kernel_time();
+ return xtime.tv_sec;
+}
+#else
#define osi_Time() (xtime.tv_sec)
+#endif
+
+
+
#ifdef AFS_LINUX_64BIT_KERNEL
#define osi_GetTime(V) \
do { \
static ctl_table afs_sysctl_table[] = {
{
+#if defined(SYSCTL_TABLE_CHECKING)
+ .ctl_name = CTL_UNNUMBERED,
+#else
.ctl_name = 1,
+#endif
.procname = "hm_retry_RO",
.data = &hm_retry_RO,
.maxlen = sizeof(afs_int32),
.proc_handler = &proc_dointvec
},
{
+#if defined(SYSCTL_TABLE_CHECKING)
+ .ctl_name = CTL_UNNUMBERED,
+#else
.ctl_name = 2,
+#endif
.procname = "hm_retry_RW",
.data = &hm_retry_RW,
.maxlen = sizeof(afs_int32),
.proc_handler = &proc_dointvec
},
{
+#if defined(SYSCTL_TABLE_CHECKING)
+ .ctl_name = CTL_UNNUMBERED,
+#else
.ctl_name = 3,
+#endif
.procname = "hm_retry_int",
.data = &hm_retry_int,
.maxlen = sizeof(afs_int32),
.proc_handler = &proc_dointvec
},
{
+#if defined(SYSCTL_TABLE_CHECKING)
+ .ctl_name = CTL_UNNUMBERED,
+#else
.ctl_name = 4,
+#endif
.procname = "GCPAGs",
.data = &afs_gcpags,
.maxlen = sizeof(afs_int32),
.proc_handler = &proc_dointvec
},
{
+#if defined(SYSCTL_TABLE_CHECKING)
+ .ctl_name = CTL_UNNUMBERED,
+#else
.ctl_name = 5,
+#endif
.procname = "rx_deadtime",
.data = &afs_rx_deadtime,
.maxlen = sizeof(afs_int32),
.proc_handler = &proc_dointvec
},
{
+#if defined(SYSCTL_TABLE_CHECKING)
+ .ctl_name = CTL_UNNUMBERED,
+#else
.ctl_name = 6,
+#endif
.procname = "bkVolPref",
.data = &afs_bkvolpref,
.maxlen = sizeof(afs_int32),
static ctl_table fs_sysctl_table[] = {
{
+#if defined(SYSCTL_TABLE_CHECKING)
+ .ctl_name = CTL_UNNUMBERED,
+#else
.ctl_name = 1,
+#endif
.procname = "afs",
.mode = 0555,
.child = afs_sysctl_table
#if defined(HAVE_KMEM_CACHE_T)
init_once(void * foo, kmem_cache_t * cachep, unsigned long flags)
#else
+#if defined(KMEM_CACHE_INIT)
+init_once(struct kmem_cache * cachep, void * foo)
+#else
init_once(void * foo, struct kmem_cache * cachep, unsigned long flags)
#endif
+#endif
{
struct vcache *vcp = (struct vcache *) foo;
#if defined(LINUX_KEYRING_SUPPORT)
#include <linux/rwsem.h>
#include <linux/key.h>
+#if defined(KEY_TYPE_H_EXISTS)
+#include <linux/key-type.h>
+#endif
#ifndef KEY_ALLOC_IN_QUOTA
#define KEY_ALLOC_IN_QUOTA 1
#endif
# [ACTION-IF-SUCCESS], [ACTION-IF-FAILURE])
#
AC_DEFUN([AC_TRY_KBUILD26],[ rm -fr conftest.dir
+ if test "x$ac_linux_kbuild_requires_extra_cflags" = "xyes" ; then
+ CFLAGS_PREFIX='EXTRA_'
+ fi
if mkdir conftest.dir &&
cat >conftest.dir/Makefile <<_ACEOF &&
-CFLAGS += $CPPFLAGS
+${CFLAGS_PREFIX}CFLAGS += $CPPFLAGS
obj-m += conftest.o
_ACEOF
[],:,AC_MSG_RESULT(no)
AC_MSG_FAILURE([Fix problem or use --disable-kernel-module...]))
AC_MSG_RESULT(yes)])
+
+AC_DEFUN([LINUX_KBUILD_USES_EXTRA_CFLAGS], [
+ AC_MSG_CHECKING([if linux kbuild requires EXTRA_CFLAGS])
+ save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS=-Wall
+ AC_TRY_KBUILD(
+[#include <linux/sched.h>
+#include <linux/fs.h>],
+ [],
+ ac_linux_kbuild_requires_extra_cflags=no,
+ ac_linux_kbuild_requires_extra_cflags=yes)
+ CPPFLAGS="$save_CPPFLAGS"
+ AC_MSG_RESULT($ac_linux_kbuild_requires_extra_cflags)])
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], [
+ AC_TRY_KBUILD(
+[#include <linux/time.h>],
+[struct timespec s = current_kernel_time();],
+ ac_cv_linux_have_current_kernel_time=yes,
+ ac_cv_linux_have_current_kernel_time=no)])
+ AC_MSG_RESULT($ac_cv_linux_have_current_kernel_time)])
+
+AC_DEFUN([LINUX_KMEM_CACHE_INIT], [
+ AC_MSG_CHECKING([for new kmem_cache init function parameters])
+ AC_CACHE_VAL([ac_cv_linux_kmem_cache_init], [
+ AC_TRY_KBUILD(
+[#include <linux/slab.h>],
+[extern struct kmem_cache *kmem_cache_create(const char *, size_t, size_t,
+ unsigned long,
+ void (*)(struct kmem_cache *, void *));
+return;],
+ ac_cv_linux_kmem_cache_init=yes,
+ ac_cv_linux_kmem_cache_init=no)])
+ AC_MSG_RESULT($ac_cv_linux_kmem_cache_init)])
+
+AC_DEFUN([LINUX_SYSCTL_TABLE_CHECKING], [
+ AC_MSG_CHECKING([for sysctl table checking])
+ AC_CACHE_VAL([ac_cv_linux_sysctl_table_checking], [
+ AC_TRY_KBUILD(
+[#include <linux/sysctl.h>],
+[extern int sysctl_check_table(struct ctl_table *t);
+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)])
+