])
])
-# check cpu topology functions
-#
-# topology_core_cpumask (2.6.29, not on all archs)
-# topology_core_siblings (not on all archs)
-# topology_thread_cpumask (2.6.29, not on all archs)
-# topology_thread_siblings (not on all archs)
-# cpumask_of_node/node_to_cpumask (not always exported)
-AC_DEFUN([LIBCFS_CPU_TOPOLOGY],
-[AC_MSG_CHECKING([whether have topology.h])
-LB_LINUX_TRY_COMPILE([
- #include <linux/topology.h>
-],[],[
- AC_DEFINE(HAVE_CPU_TOPOLOGY, 1, [have CPU topology])
- AC_MSG_RESULT(yes)
-
- AC_MSG_CHECKING([whether have topology_core_cpumask])
- LB_LINUX_TRY_COMPILE([
- #include <linux/topology.h>
- ],[
- cpumask_t *mask = topology_core_cpumask(0);
- ],[
- AC_DEFINE(HAVE_TOPOLOGY_CORE_CPUMASK, 1,
- [have topology_core_cpumask])
- AC_MSG_RESULT(yes)
- ],[
- AC_MSG_RESULT(no)
- ])
-
- AC_MSG_CHECKING([whether have topology_core_siblings])
- LB_LINUX_TRY_COMPILE([
- #include <linux/topology.h>
- ],[
- cpumask_t mask = topology_core_siblings(0);
- ],[
- AC_DEFINE(HAVE_TOPOLOGY_CORE_SIBLINGS, 1,
- [have topology_core_siblings])
- AC_MSG_RESULT(yes)
- ],[
- AC_MSG_RESULT(no)
- ])
-
- AC_MSG_CHECKING([whether have topology_thread_cpumask])
- LB_LINUX_TRY_COMPILE([
- #include <linux/topology.h>
- ],[
- cpumask_t *mask = topology_thread_cpumask(0);
- ],[
- AC_DEFINE(HAVE_TOPOLOGY_THREAD_CPUMASK, 1,
- [have topology_thread_cpumask])
- AC_MSG_RESULT(yes)
- ],[
- AC_MSG_RESULT(no)
- ])
-
- AC_MSG_CHECKING([whether have topology_thread_siblings])
- LB_LINUX_TRY_COMPILE([
- #include <linux/topology.h>
- ],[
- cpumask_t mask = topology_thread_siblings(0);
- ],[
- AC_DEFINE(HAVE_TOPOLOGY_THREAD_SIBLINGS, 1,
- [have topology_thread_siblings])
- AC_MSG_RESULT(yes)
- ],[
- AC_MSG_RESULT(no)
- ])
-
- AC_MSG_CHECKING([whether OFED backports have cpumask_of_node])
- # Some OFED has cpumask_of_node backports defined in
- # its private include/linux/cpumask.h. However, it is
- # defined conflictingly with kernel's cpumask_of_node.
- if test -f $OFED_BACKPORT_PATH/linux/cpumask.h; then
- grep -q cpumask_of_node $OFED_BACKPORT_PATH/linux/cpumask.h 2>/dev/null
- rc=$?
- if test $rc -eq 0; then
- AC_DEFINE(HAVE_OFED_CPUMASK_OF_NODE, 1, [have cpumask_of_node])
- AC_MSG_RESULT(yes)
- else
- AC_MSG_RESULT(no)
- fi
- fi
-
- AC_MSG_CHECKING([whether have cpumask_of_node])
- LB_LINUX_TRY_COMPILE([
- #include <linux/topology.h>
- ],[
- cpumask_t *mask = cpumask_of_node(0);
- ],[
- AC_DEFINE(HAVE_CPUMASK_OF_NODE, 1, [have cpumask_of_node])
- AC_MSG_RESULT(yes)
- ],[
- AC_MSG_RESULT(no)
- ])
-
- AC_MSG_CHECKING([whether have cpumask_copy])
- LB_LINUX_TRY_COMPILE([
- #include <linux/cpumask.h>
- ],[
- cpumask_copy(NULL, NULL);
- ],[
- AC_DEFINE(HAVE_CPUMASK_COPY, 1, [have cpumask_copy])
- AC_MSG_RESULT(yes)
- ],[
- AC_MSG_RESULT(no)
- ])
-
- AC_MSG_CHECKING([whether have node_to_cpumask])
- LB_LINUX_TRY_COMPILE([
- #include <linux/topology.h>
- ],[
- cpumask_t mask = node_to_cpumask(0);
- ],[
- AC_DEFINE(HAVE_NODE_TO_CPUMASK, 1, [have node_to_cpumask])
- AC_MSG_RESULT(yes)
- ],[
- AC_MSG_RESULT(no)
- ])
-],[
- AC_MSG_RESULT(NO)
-])
-])
-
-
# 2.6.24 request not use real numbers for ctl_name
AC_DEFUN([LIBCFS_SYSCTL_UNNUMBERED],
[AC_MSG_CHECKING([for CTL_UNNUMBERED])
LIBCFS_SYSCTL_UNNUMBERED
LIBCFS_FUNC_DUMP_TRACE
LIBCFS_HAVE_KEYTYPE_H
-# 2.6.28
-LIBCFS_CPUMASK_SIZE
-# 2.6.29
-LIBCFS_CPU_TOPOLOGY
# 2.6.30
LIBCFS_SOCK_MAP_FD_2ARG
# 2.6.32
#include <linux/topology.h>
#include <linux/version.h>
-#ifndef HAVE_CPUMASK_SIZE
-#define cpumask_size() sizeof(cpumask_t)
-#endif
-
#ifdef CONFIG_SMP
#define HAVE_LIBCFS_CPT
* #define cfs_cpu_mask_for_each(i, mask) for_each_cpu_mask(i, mask)
* #define cfs_cpu_mask_bind(t, mask) set_cpus_allowed(t, mask)
*
- * #ifdef HAVE_CPUMASK_COPY
* #define cfs_cpu_mask_copy(dst, src) cpumask_copy(dst, src)
- * #else
- * #define cfs_cpu_mask_copy(dst, src) memcpy(dst, src, sizeof(*src))
- * #endif
*
* static inline void
* cfs_cpu_mask_of_online(cfs_cpumask_t *mask)
*
* static inline void cfs_node_to_cpumask(int node, cfs_cpumask_t *mask)
* {
- * #if defined(HAVE_NODE_TO_CPUMASK)
- * *mask = node_to_cpumask(node);
- * #elif defined(HAVE_CPUMASK_OF_NODE)
* cfs_cpu_mask_copy(mask, cpumask_of_node(node));
- * #else
- * # error "Needs node_to_cpumask or cpumask_of_node"
- * #endif
* }
*
* #define cfs_node_mask_set(i, mask) node_set(i, mask)
void
cfs_cpu_core_siblings(int cpu, cpumask_t *mask)
{
-#if defined(HAVE_TOPOLOGY_CORE_CPUMASK) && defined(HAVE_CPUMASK_COPY)
/* return cpumask of cores in the same socket */
cpumask_copy(mask, topology_core_cpumask(cpu));
-#elif defined(HAVE_TOPOLOGY_CORE_SIBLINGS)
- *mask = topology_core_siblings(cpu);
-#else
- cpus_clear(*mask);
- cpu_set(cpu, *mask);
-#endif
}
EXPORT_SYMBOL(cfs_cpu_core_siblings);
void
cfs_cpu_ht_siblings(int cpu, cpumask_t *mask)
{
-#if defined(HAVE_TOPOLOGY_THREAD_CPUMASK) && defined(HAVE_CPUMASK_COPY)
cpumask_copy(mask, topology_thread_cpumask(cpu));
-#elif defined(HAVE_TOPOLOGY_THREAD_SIBLINGS)
- *mask = topology_thread_siblings(cpu);
-#else
- cpus_clear(*mask);
- cpu_set(cpu, *mask);
-#endif
}
EXPORT_SYMBOL(cfs_cpu_ht_siblings);
void
cfs_node_to_cpumask(int node, cpumask_t *mask)
{
-#if defined(HAVE_CPUMASK_OF_NODE) && defined(HAVE_CPUMASK_COPY)
cpumask_copy(mask, cpumask_of_node(node));
-#elif defined(HAVE_NODE_TO_CPUMASK)
- *mask = node_to_cpumask(node);
-#else
- cpus_clear(*mask);
- for_each_online_cpu(i) {
- if (cpu_to_node(i) == node)
- cpu_set(i, *mask);
- }
-#endif
}
EXPORT_SYMBOL(cfs_node_to_cpumask);
[kernel export delete_from_page_cache])])
])
-# The actual symbol exported varies among architectures, so we need
-# to check many symbols (but only in the current architecture.) No
-# matter what symbol is exported, the kernel #defines node_to_cpumask
-# to the appropriate function and that's what we use.
-AC_DEFUN([LC_EXPORT_NODE_TO_CPUMASK],
- [LB_CHECK_SYMBOL_EXPORT([node_to_cpumask],
- [arch/$LINUX_ARCH/mm/numa.c],
- [AC_DEFINE(HAVE_NODE_TO_CPUMASK, 1,
- [node_to_cpumask is exported by
- the kernel])]) # x86_64
- LB_CHECK_SYMBOL_EXPORT([node_to_cpu_mask],
- [arch/$LINUX_ARCH/kernel/smpboot.c],
- [AC_DEFINE(HAVE_NODE_TO_CPUMASK, 1,
- [node_to_cpumask is exported by
- the kernel])]) # ia64
- LB_CHECK_SYMBOL_EXPORT([node_2_cpu_mask],
- [arch/$LINUX_ARCH/kernel/smpboot.c],
- [AC_DEFINE(HAVE_NODE_TO_CPUMASK, 1,
- [node_to_cpumask is exported by
- the kernel])]) # i386
- ])
-
#
# added in 2.6.17
#
])
])
-# 2.6.30 x86 node_to_cpumask has been removed. must use cpumask_of_node
-AC_DEFUN([LC_EXPORT_CPUMASK_OF_NODE],
- [LB_CHECK_SYMBOL_EXPORT([node_to_cpumask_map],
- [arch/$LINUX_ARCH/mm/numa.c],
- [AC_DEFINE(HAVE_CPUMASK_OF_NODE, 1,
- [node_to_cpumask_map is exported by
- the kernel])]) # x86_64
- ])
-
-
# 2.6.32
# 2.6.32 replaces 2 functions blk_queue_max_phys_segments and blk_queue_max_hw_segments by blk_queue_max_segments
# RHEL4 patches
LC_EXPORT_TRUNCATE_COMPLETE
- LC_EXPORT_NODE_TO_CPUMASK
LC_BIT_SPINLOCK_H
LC_BI_HW_SEGMENTS
LC_HAVE_QUOTAIO_H
- # 2.6.30
- LC_EXPORT_CPUMASK_OF_NODE
-
# 2.6.32
LC_BLK_QUEUE_MAX_SEGMENTS
LC_SET_CPUS_ALLOWED
#define bio_hw_segments(q, bio) 0
#endif
-#if !defined(HAVE_CPUMASK_OF_NODE) && defined(HAVE_NODE_TO_CPUMASK)
-# ifdef HAVE_OFED_CPUMASK_OF_NODE
-# undef cpumask_of_node
-# define HAVE_CPUMASK_OF_NODE
-# endif
-#define cpumask_of_node(i) (&node_to_cpumask(i))
-#endif
-
#ifndef QUOTA_OK
# define QUOTA_OK 0
#endif
ENTRY;
unshare_fs_struct();
-#if defined(CONFIG_SMP) && \
-(defined(HAVE_CPUMASK_OF_NODE) || defined(HAVE_NODE_TO_CPUMASK))
+#if defined(CONFIG_SMP)
if (test_bit(LIOD_BIND, &pc->pc_flags)) {
int index = pc->pc_index;
{
struct ptlrpcd_ctl *pc;
int rc = 0;
-#if defined(CONFIG_NUMA) && \
-(defined(HAVE_CPUMASK_OF_NODE) || defined(HAVE_NODE_TO_CPUMASK))
+#if defined(CONFIG_NUMA)
cpumask_t mask;
#endif
ENTRY;
pc->pc_npartners = 1;
break;
case PDB_POLICY_NEIGHBOR:
-#if defined(CONFIG_NUMA) && \
-(defined(HAVE_CPUMASK_OF_NODE) || defined(HAVE_NODE_TO_CPUMASK))
+#if defined(CONFIG_NUMA)
{
int i;
mask = *cpumask_of_node(cpu_to_node(index));
}
break;
case PDB_POLICY_NEIGHBOR:
-#if defined(CONFIG_NUMA) && \
-(defined(HAVE_CPUMASK_OF_NODE) || defined(HAVE_NODE_TO_CPUMASK))
+#if defined(CONFIG_NUMA)
{
struct ptlrpcd_ctl *ppc;
int i, pidx;