From: Mathieu Desnoyers Date: Fri, 22 Feb 2013 15:57:48 +0000 (-0500) Subject: Fix hurd-i386: move cpuset tests outside of sched_setaffinity conditional X-Git-Tag: v0.8.0~103 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=b3231c17e4a4e0b2d76754982eb1e1bc90da2987;p=userspace-rcu.git Fix hurd-i386: move cpuset tests outside of sched_setaffinity conditional Comment about introduction of cpuset.h within urcu tests: > Unfortunately it doesn't work, because sched_setaffinity is for now > just a fail-stub on hurd-i386, and thus configure considers it as > missing, and thus the CPU_SET test is disabled completely. > > I however guess you could just disable defining your own cpu_set_t > when !HAVE_SCHED_SETAFFINITY, since it is probably used only for using > sched_setaffinity. Fix by moving cpu_set_t, CPU_SET and CPU_ZERO tests outside of the sched_setaffinity conditional. Reported-by: Samuel Thibault Signed-off-by: Mathieu Desnoyers --- diff --git a/configure.ac b/configure.ac index a49b39f..b6f787b 100644 --- a/configure.ac +++ b/configure.ac @@ -202,6 +202,49 @@ AS_IF([test "x$def_smp_support" = "xyes"], [AC_DEFINE([CONFIG_RCU_SMP], [1])]) saved_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -D_GNU_SOURCE" +AC_CHECK_TYPES([cpu_set_t], + [have_cpu_set_t="yes"], + [have_cpu_set_t="no"], + [#include ]) + +# Confirm that we have CPU_ZERO, and it actually works. +AC_MSG_CHECKING([whether CPU_ZERO works]) +AH_TEMPLATE([HAVE_CPU_ZERO], [Defined to 1 if we have CPU_ZERO and it works]) +AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ + #define _GNU_SOURCE + #include + int main() + { + cpu_set_t foo; CPU_ZERO(&foo); + return 0; + } + ]]) +],[ + AC_DEFINE(HAVE_CPU_ZERO, 1) + AC_MSG_RESULT([yes]) +],[ + AC_MSG_RESULT([no]) +]) + +# Confirm that we have CPU_SET, and it actually works. +AC_MSG_CHECKING([whether CPU_SET works]) +AH_TEMPLATE([HAVE_CPU_SET], [Defined to 1 if we have CPU_SET and it works]) +AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ + #define _GNU_SOURCE + #include + int main() + { + cpu_set_t foo, mask; CPU_SET(0, &foo); + return 0; + } + ]]) +],[ + AC_DEFINE(HAVE_CPU_SET, 1) + AC_MSG_RESULT([yes]) +],[ + AC_MSG_RESULT([no]) +]) + # First check if the function is available at all. AC_CHECK_FUNCS([sched_setaffinity],[ # Okay, we have it. Check if also have cpu_set_t. If we don't, @@ -210,47 +253,8 @@ AC_CHECK_FUNCS([sched_setaffinity],[ # version with 2 or 3 arguments. In that case, CPU_ZERO, etc., # should also be present, but we confirm nonetheless. - AC_CHECK_TYPES([cpu_set_t],[ - # We do have it. Confirm that we have CPU_ZERO, and it actually works. - AC_MSG_CHECKING([whether CPU_ZERO works]) - AH_TEMPLATE([HAVE_CPU_ZERO], [Defined to 1 if we have CPU_ZERO and it works]) - AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ - #define _GNU_SOURCE - #include - int main() - { - cpu_set_t foo; CPU_ZERO (&foo); - return 0; - } - ]]) - ],[ - # Works! - AC_DEFINE(HAVE_CPU_ZERO, 1) - AC_MSG_RESULT([yes]) - ],[ - AC_MSG_RESULT([no]) - ]) - - # Confirm that we have CPU_SET, and it actually works. - AC_MSG_CHECKING([whether CPU_SET works]) - AH_TEMPLATE([HAVE_CPU_SET], [Defined to 1 if we have CPU_SET and it works]) - AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ - #define _GNU_SOURCE - #include - int main() - { - cpu_set_t foo, mask; CPU_SET (0, &foo); - return 0; - } - ]]) - ],[ - # Works! - AC_DEFINE(HAVE_CPU_SET, 1) - AC_MSG_RESULT([yes]) - ],[ - AC_MSG_RESULT([no]) - ]) - + AS_IF([test "x$have_cpu_set_t" = "xyes"], [ + # We do have it. # Check how many arguments does sched_setaffinity take. # Should be 3 or 2. AC_MSG_CHECKING([how many arguments sched_setaffinity takes]) @@ -259,21 +263,21 @@ AC_CHECK_FUNCS([sched_setaffinity],[ int main() { cpu_set_t foo; - sched_setaffinity (0, sizeof (foo), &foo); + sched_setaffinity(0, sizeof (foo), &foo); return 0; } ]]) ], [sched_set_affinity_args=3], [sched_set_affinity_args=2]) - AC_DEFINE_UNQUOTED(SCHED_SETAFFINITY_ARGS, $sched_set_affinity_args, + AC_DEFINE_UNQUOTED(SCHED_SETAFFINITY_ARGS, + $sched_set_affinity_args, [Defined to sched_setaffinity's number of arguments.]) AC_MSG_RESULT([$sched_set_affinity_args]) ],[ # No cpu_set_t, always 3 args. AC_DEFINE(SCHED_SETAFFINITY_ARGS, 3) - ], - [#include ]) + ]) ]) CFLAGS=$saved_CFLAGS