LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_EXIT_STATE
LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_TGID
LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_TODO
+ LINUX_EXPORTS_TASKLIST_LOCK
LINUX_GET_SB_HAS_STRUCT_VFSMOUNT
LINUX_STATFS_TAKES_DENTRY
LINUX_REFRIGERATOR
if test "x$ac_cv_linux_fs_struct_fop_has_flock" = "xyes" ; then
AC_DEFINE(STRUCT_FILE_OPERATIONS_HAS_FLOCK, 1, [define if your struct file_operations has flock])
fi
+ if test "x$ac_cv_linux_exports_tasklist_lock" = "xyes" ; then
+ AC_DEFINE(EXPORTED_TASKLIST_LOCK, 1, [define if tasklist_lock exported])
+ fi
:
fi
esac
struct task_struct *p, *q;
/* search backward thru the circular list */
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+#if defined(EXPORTED_TASKLIST_LOCK)
read_lock(&tasklist_lock);
#endif
/* search backward thru the circular list */
for (p = current; p; p = p->prev_task) {
#endif
if (p->pid == 1) {
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+#if defined(EXPORTED_TASKLIST_LOCK)
read_unlock(&tasklist_lock);
#endif
return p->addr_limit.seg;
}
}
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+#if defined(EXPORTED_TASKLIST_LOCK)
read_unlock(&tasklist_lock);
#endif
return 0;
extern asmlinkage long sys_open (const char *, int, int) __attribute__((weak));
#endif
extern asmlinkage long sys_ioctl(unsigned int, unsigned int, unsigned long) __attribute__((weak));
+#if defined(EXPORTED_TASKLIST_LOCK)
extern rwlock_t tasklist_lock __attribute__((weak));
+#endif
/* Structures used to control probing. We put all the details of which
afs_osi_TraverseProcTable()
{
#if !defined(LINUX_KEYRING_SUPPORT)
- extern rwlock_t tasklist_lock __attribute__((weak));
struct task_struct *p;
-
+#ifdef EXPORTED_TASKLIST_LOCK
+ extern rwlock_t tasklist_lock __attribute__((weak));
+
if (&tasklist_lock)
read_lock(&tasklist_lock);
+#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
+#ifdef EXPORTED_TASKLIST_LOCK
else
+#endif
rcu_read_lock();
#endif
afs_GCPAGs_perproc_func(p);
}
#endif
+#ifdef EXPORTED_TASKLIST_LOCK
if (&tasklist_lock)
read_unlock(&tasklist_lock);
+#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
+#ifdef EXPORTED_TASKLIST_LOCK
else
+#endif
rcu_read_unlock();
#endif
#endif
+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));
+],
+ 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], [