Fix compile on CentOS/RHEL5
authorJens Axboe <axboe@fb.com>
Wed, 5 Mar 2014 22:49:54 +0000 (15:49 -0700)
committerJens Axboe <axboe@fb.com>
Wed, 5 Mar 2014 22:49:54 +0000 (15:49 -0700)
They don't have CPU_COUNT(), so add a helper for that.

Signed-off-by: Jens Axboe <axboe@fb.com>
configure
os/os.h

index 4b006792c55c8f99c11e0ca462240c0a19520328..4a8d352cdc9080e76edced844e4350933d46a1b8 100755 (executable)
--- a/configure
+++ b/configure
@@ -649,6 +649,22 @@ fi
 echo "sched_setaffinity(3 arg)      $linux_3arg_affinity"
 echo "sched_setaffinity(2 arg)      $linux_2arg_affinity"
 
+##########################################
+# CPU_COUNT test
+cpu_count="no"
+cat > $TMPC << EOF
+#include <sched.h>
+int main(int argc, char **argv)
+{
+  cpu_set_t mask;
+  return CPU_COUNT(&mask);
+}
+EOF
+if compile_prog "" "" "cpu_count"; then
+  cpu_count="yes"
+fi
+echo "CPU_COUNT                     $cpu_count"
+
 ##########################################
 # clock_gettime probe
 clock_gettime="no"
@@ -1270,6 +1286,9 @@ fi
 if test "$rbd" = "yes" ; then
   output_sym "CONFIG_RBD"
 fi
+if test "$cpu_count" = "yes" ; then
+  output_sym "CONFIG_CPU_COUNT"
+fi
 
 echo "LIBS+=$LIBS" >> $config_host_mak
 echo "CFLAGS+=$CFLAGS" >> $config_host_mak
diff --git a/os/os.h b/os/os.h
index a6bc17f09b5797632697de1b4c434f8f1a68482f..7f92d1bc710bbf84a13c582a7e0d5c7893b36697 100644 (file)
--- a/os/os.h
+++ b/os/os.h
@@ -327,6 +327,22 @@ static inline unsigned int cpus_online(void)
 }
 #endif
 
+#ifndef CONFIG_CPU_COUNT
+#ifdef FIO_HAVE_CPU_AFFINITY
+static inline int CPU_COUNT(os_cpu_mask_t *mask)
+{
+       int max_cpus = cpus_online();
+       int nr_cpus, i;
+
+       for (i = 0, nr_cpus = 0; i < max_cpus; i++)
+               if (fio_cpu_isset(mask, i))
+                       nr_cpus++;
+
+       return nr_cpus;
+}
+#endif
+#endif
+
 #ifndef FIO_HAVE_GETTID
 static inline int gettid(void)
 {