| ##***************************************************************************** |
| # $Id$ |
| ##***************************************************************************** |
| # AUTHOR: |
| # Morris Jette <jette1@llnl.gov> |
| # |
| # SYNOPSIS: |
| # X_AC_AFFINITY |
| # |
| # DESCRIPTION: |
| # Test for various task affinity functions and set the definitions. |
| # |
| # WARNINGS: |
| # This macro must be placed after AC_PROG_CC or equivalent. |
| ##***************************************************************************** |
| |
| AC_DEFUN([X_AC_AFFINITY], [ |
| |
| # Test if sched_setaffinity function exists and argument count (it can vary) |
| AC_CHECK_FUNCS(sched_setaffinity, [have_sched_setaffinity=yes]) |
| |
| AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#define _GNU_SOURCE |
| #include <sched.h>]], [[cpu_set_t mask; |
| sched_getaffinity(0, sizeof(cpu_set_t), &mask);]])],[AC_DEFINE(SCHED_GETAFFINITY_THREE_ARGS, 1, |
| [Define to 1 if sched_getaffinity takes three arguments.])],[]) |
| |
| AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#define _GNU_SOURCE |
| #include <sched.h>]], [[cpu_set_t mask; |
| sched_getaffinity(0, &mask);]])],[AC_DEFINE(SCHED_GETAFFINITY_TWO_ARGS, 1, |
| [Define to 1 if sched_getaffinity takes two arguments.])],[]) |
| |
| # |
| # Test for NUMA memory afffinity functions and set the definitions |
| # |
| AC_CHECK_LIB([numa], |
| [numa_available], |
| [ac_have_numa=yes; NUMA_LIBS="-lnuma"]) |
| |
| AC_SUBST(NUMA_LIBS) |
| AM_CONDITIONAL(HAVE_NUMA, test "x$ac_have_numa" = "xyes") |
| if test "x$ac_have_numa" = "xyes"; then |
| AC_DEFINE(HAVE_NUMA, 1, [define if numa library installed]) |
| CFLAGS="-DNUMA_VERSION1_COMPATIBILITY $CFLAGS" |
| else |
| AC_MSG_WARN([Unable to locate NUMA memory affinity functions]) |
| fi |
| |
| # |
| # Test for cpuset directory |
| # |
| cpuset_default_dir="/dev/cpuset" |
| AC_ARG_WITH([cpusetdir], |
| AS_HELP_STRING(--with-cpusetdir=PATH,specify path to cpuset directory default is /dev/cpuset), |
| [try_path=$withval]) |
| for cpuset_dir in $try_path "" $cpuset_default_dir; do |
| if test -d "$cpuset_dir" ; then |
| AC_DEFINE_UNQUOTED(CPUSET_DIR, "$cpuset_dir", [Define location of cpuset directory]) |
| have_sched_setaffinity=yes |
| break |
| fi |
| done |
| |
| # |
| # Set HAVE_SCHED_SETAFFINITY if any task affinity supported |
| AM_CONDITIONAL(HAVE_SCHED_SETAFFINITY, test "x$have_sched_setaffinity" = "xyes") |
| ]) |
| |