summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/cyclictest/cyclictest.c7
-rw-r--r--src/cyclictest/rt_numa.h18
2 files changed, 15 insertions, 10 deletions
diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c
index 213c527..b3abfcc 100644
--- a/src/cyclictest/cyclictest.c
+++ b/src/cyclictest/cyclictest.c
@@ -1451,12 +1451,11 @@ static void process_options (int argc, char *argv[], int max_cpus)
setvbuf(stdout, NULL, _IONBF, 0); break;
case 'U':
case OPT_NUMA: /* NUMA testing */
+ numa = 1; /* Turn numa on */
if (smp)
fatal("numa and smp options are mutually exclusive\n");
+ numa_on_and_available();
#ifdef NUMA
- if (numa_available() == -1)
- fatal("NUMA functionality not available!");
- numa = 1;
num_threads = max_cpus;
setaffinity = AFFINITY_USEALL;
use_nanosleep = MODE_CLOCK_NANOSLEEP;
@@ -1816,8 +1815,6 @@ int main(int argc, char **argv)
if (verbose)
printf("Max CPUs = %d\n", max_cpus);
- /* Checks if numa is on, program exits if numa on but not available */
- numa_on_and_available();
/* lock all memory (prevent swapping) */
if (lockall)
diff --git a/src/cyclictest/rt_numa.h b/src/cyclictest/rt_numa.h
index 06c9420..c1b3f94 100644
--- a/src/cyclictest/rt_numa.h
+++ b/src/cyclictest/rt_numa.h
@@ -192,6 +192,12 @@ static inline void rt_bitmask_free(struct bitmask *mask)
#endif /* LIBNUMA_API_VERSION */
+static void numa_on_and_available()
+{
+ if (numa && (numa_available() == -1))
+ fatal("--numa specified and numa functions not available.\n");
+}
+
#else /* ! NUMA */
struct bitmask {
@@ -249,17 +255,19 @@ static inline void rt_bitmask_free(struct bitmask *mask)
free(mask);
}
-#endif /* NUMA */
-/*
- * Any behavioral differences above are transparent to these functions
- */
static void numa_on_and_available()
{
- if (numa && (numa_available() == -1))
+ if (numa) /* NUMA is not defined here */
fatal("--numa specified and numa functions not available.\n");
}
+#endif /* NUMA */
+
+/*
+ * Any behavioral differences above are transparent to these functions
+ */
+
/** Returns number of bits set in mask. */
static inline unsigned int rt_numa_bitmask_count(const struct bitmask *mask)
{