Ver Fonte

Bug fix for ncpus if hyperthreading turned off in linux

Booker C. Bense há 12 anos atrás
pai
commit
f12edfd073
2 ficheiros alterados com 18 adições e 6 exclusões
  1. 11 3
      configure.in
  2. 7 3
      plugins/common.h

+ 11 - 3
configure.in

@@ -1270,12 +1270,20 @@ fi
 
 
 AC_MSG_CHECKING([for number of cpus])
 AC_MSG_CHECKING([for number of cpus])
 AC_TRY_COMPILE([#include <unistd.h>],
 AC_TRY_COMPILE([#include <unistd.h>],
-	[sysconf(_SC_NPROCESSORS_CONF) > 0;],
-	AC_DEFINE(HAVE_SYSCONF__SC_NPROCESSORS_CONF,1,[Define if sysconf returns number of cpus])
-	AC_MSG_RESULT([sysconf(_SC_NPROCESSORS_CONF)]),
+	[sysconf(_SC_NPROCESSORS_ONLN) > 0;],
+	AC_DEFINE(HAVE_SYSCONF__SC_NPROCESSORS_ONLN,1,[Define if sysconf returns number of cpus])
+	AC_MSG_RESULT([sysconf(_SC_NPROCESSORS_ONLN)]),
 	AC_MSG_RESULT([cannot calculate])
 	AC_MSG_RESULT([cannot calculate])
 	)
 	)
 
 
+AC_TRY_COMPILE([#include <unistd.h>],
+        [sysconf(_SC_NPROCESSORS_CONF) > 0;],
+        AC_DEFINE(HAVE_SYSCONF__SC_NPROCESSORS_CONF,1,[Define if sysconf returns number of cpus])
+        AC_MSG_RESULT([sysconf(_SC_NPROCESSORS_CONF)]),
+        AC_MSG_RESULT([cannot calculate])
+        )
+
+
 AC_PATH_PROG(PATH_TO_UPTIME,uptime)
 AC_PATH_PROG(PATH_TO_UPTIME,uptime)
 AC_ARG_WITH(uptime_command,
 AC_ARG_WITH(uptime_command,
             ACX_HELP_STRING([--with-uptime-command=PATH],
             ACX_HELP_STRING([--with-uptime-command=PATH],

+ 7 - 3
plugins/common.h

@@ -82,10 +82,14 @@
    getting that data
    getting that data
    Will return -1 if cannot get data
    Will return -1 if cannot get data
 */
 */
-#ifdef HAVE_SYSCONF__SC_NPROCESSORS_CONF 
-#define GET_NUMBER_OF_CPUS() sysconf(_SC_NPROCESSORS_CONF)
+#ifdef HAVE_SYSCONF__SC_NPROCESSORS_ONLN
+#define GET_NUMBER_OF_CPUS() sysconf(_SC_NPROCESSORS_ONLN)
 #else
 #else
-#define GET_NUMBER_OF_CPUS() -1
+# ifdef HAVE_SYSCONF__SC_NPROCESSORS_CONF
+#  define GET_NUMBER_OF_CPUS() sysconf(_SC_NPROCESSORS_CONF)
+# else
+#  define GET_NUMBER_OF_CPUS() -1
+# endif
 #endif
 #endif
 
 
 #ifdef TIME_WITH_SYS_TIME
 #ifdef TIME_WITH_SYS_TIME