#
-# LIBCFS_CONFIG_CDEBUG
+# LN_CONFIG_CDEBUG
#
# whether to enable various libcfs debugs (CDEBUG, ENTRY/EXIT, LASSERT, etc.)
#
-AC_DEFUN([LIBCFS_CONFIG_CDEBUG],
+AC_DEFUN([LN_CONFIG_CDEBUG],
[
AC_MSG_CHECKING([whether to enable CDEBUG, CWARN])
AC_ARG_ENABLE([libcfs_cdebug],
])
])
-# check userland __u64 type
+# check userland & kernel __u64 type
AC_DEFUN([LIBCFS_U64_LONG_LONG],
[AC_MSG_CHECKING([u64 is long long type])
tmp_flags="$CFLAGS"
}
],[
AC_MSG_RESULT([yes])
- AC_DEFINE(HAVE_U64_LONG_LONG, 1,
+ AC_DEFINE(HAVE_USER__U64_LONG_LONG, 1,
[__u64 is long long type])
],[
AC_MSG_RESULT([no])
])
CFLAGS="$tmp_flags"
+AC_MSG_CHECKING([kernel __u64 is long long type])
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="$EXTRA_KCFLAGS -Werror"
+LB_LINUX_TRY_COMPILE([
+ #include <linux/types.h>
+ #include <linux/stddef.h>
+],[
+ unsigned long long *data1;
+ __u64 *data2 = NULL;
+
+ data1 = data2;
+],[
+ AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_KERN__U64_LONG_LONG, 1,
+ [kernel __u64 is long long type])
+],[
+ AC_MSG_RESULT([no])
+])
+EXTRA_KCFLAGS="$tmp_flags"
])
# check userland size_t type
])
+# check if task_struct with rcu memeber
+AC_DEFUN([LIBCFS_TASK_RCU],
+[AC_MSG_CHECKING([if task_struct has a rcu field])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/sched.h>
+],[
+ struct task_struct tsk;
+
+ tsk.rcu.next = NULL;
+],[
+ AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_TASK_RCU, 1,
+ [task_struct has rcu field])
+],[
+ AC_MSG_RESULT([no])
+])
+])
+
# LIBCFS_TASKLIST_LOCK
# 2.6.18 remove tasklist_lock export
AC_DEFUN([LIBCFS_TASKLIST_LOCK],
])
])
+# 2.6.24 request not use real numbers for ctl_name
+AC_DEFUN([LN_SYSCTL_UNNUMBERED],
+[AC_MSG_CHECKING([for CTL_UNNUMBERED])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/sysctl.h>
+],[
+ #ifndef CTL_UNNUMBERED
+ #error CTL_UNNUMBERED not exist in kernel
+ #endif
+],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_SYSCTL_UNNUMBERED, 1,
+ [sysctl has CTL_UNNUMBERED])
+],[
+ AC_MSG_RESULT(NO)
+])
+])
+
+# 2.6.24 lost scatterlist->page
+AC_DEFUN([LN_SCATTERLIST_SETPAGE],
+[AC_MSG_CHECKING([for exist sg_set_page])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/scatterlist.h>
+],[
+ sg_set_page(NULL,NULL,0,0);
+],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_SCATTERLIST_SETPAGE, 1,
+ [struct scatterlist has page member])
+],[
+ AC_MSG_RESULT(NO)
+])
+])
+
+# 2.6.26 use int instead of atomic for sem.count
+AC_DEFUN([LN_SEM_COUNT],
+[AC_MSG_CHECKING([atomic sem.count])
+LB_LINUX_TRY_COMPILE([
+ #include <asm/semaphore.h>
+],[
+ struct semaphore s;
+
+ atomic_read(&s.count);
+],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_SEM_COUNT_ATOMIC, 1,
+ [semaphore counter is atomic])
+],[
+ AC_MSG_RESULT(NO)
+])
+])
+
#
# LIBCFS_PROG_LINUX
#
LIBCFS_U64_LONG_LONG
LIBCFS_SSIZE_T_LONG
LIBCFS_SIZE_T_LONG
+LIBCFS_TASK_RCU
# 2.6.18
LIBCFS_TASKLIST_LOCK
# 2.6.19
LIBCFS_KMEM_CACHE
# 2.6.23
LIBCFS_KMEM_CACHE_CREATE_DTOR
+# 2.6.24
+LN_SYSCTL_UNNUMBERED
+LN_SCATTERLIST_SETPAGE
+# 2.6.26
+LN_SEM_COUNT
])
#
# lnet/utils/wirecheck.c
AC_CHECK_FUNCS([strnlen])
+AC_CHECK_TYPE([umode_t],
+ [AC_DEFINE(HAVE_UMODE_T, 1, [umode_t is defined])],
+ [],
+ [#include <signal.h>])
+
+AC_CHECK_TYPE([__u64],
+ [AC_DEFINE(HAVE___U64, 1, [__u64 is defined])],
+ [],
+ [#include <signal.h>])
+
+AC_CHECK_TYPE([__s64],
+ [AC_DEFINE(HAVE___S64, 1, [__s64 is defined])],
+ [],
+ [#include <signal.h>])
+
# -------- Check for required packages --------------
libcfs/include/Makefile
libcfs/include/libcfs/Makefile
libcfs/include/libcfs/linux/Makefile
+libcfs/include/libcfs/posix/Makefile
+libcfs/include/libcfs/util/Makefile
libcfs/libcfs/Makefile
libcfs/libcfs/autoMakefile
libcfs/libcfs/linux/Makefile
+libcfs/libcfs/ulinux/Makefile
+libcfs/libcfs/posix/Makefile
+libcfs/libcfs/util/Makefile
])
case $lb_target_os in
darwin)