blob: 61dabb5d33f6abd2a5db917ec15587bcabba347c [file] [log] [blame]
##*****************************************************************************
# $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])
AM_CONDITIONAL(HAVE_SCHED_SETAFFINITY, test "x$have_sched_setaffinity" = "xyes")
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 you have the numa library])
else
AC_MSG_WARN([Unable to locate NUMA memory affinity functions])
fi
#
# Test for other affinity functions as appropriate
# TBD
])