Commit 0624fd83 authored by Sam Lantinga's avatar Sam Lantinga

Added support for querying the number of CPUs available on Linux. This also...

Added support for querying the number of CPUs available on Linux.  This also happens to work on Mac OS X.

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%404335
parent 8b304825
...@@ -207,7 +207,7 @@ if test x$enable_libc = xyes; then ...@@ -207,7 +207,7 @@ if test x$enable_libc = xyes; then
AC_DEFINE(HAVE_MPROTECT) AC_DEFINE(HAVE_MPROTECT)
]), ]),
) )
AC_CHECK_FUNCS(malloc calloc realloc free getenv setenv putenv unsetenv qsort abs bcopy memset memcpy memmove strlen strlcpy strlcat strdup _strrev _strupr _strlwr strchr strrchr strstr itoa _ltoa _uitoa _ultoa strtol strtoul _i64toa _ui64toa strtoll strtoull atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp strncasecmp sscanf snprintf vsnprintf sigaction setjmp nanosleep sysctlbyname) AC_CHECK_FUNCS(malloc calloc realloc free getenv setenv putenv unsetenv qsort abs bcopy memset memcpy memmove strlen strlcpy strlcat strdup _strrev _strupr _strlwr strchr strrchr strstr itoa _ltoa _uitoa _ultoa strtol strtoul _i64toa _ui64toa strtoll strtoull atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp strncasecmp sscanf snprintf vsnprintf sigaction setjmp nanosleep sysconf sysctlbyname)
AC_CHECK_LIB(m, pow, [LIBS="$LIBS -lm"; EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lm"]) AC_CHECK_LIB(m, pow, [LIBS="$LIBS -lm"; EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lm"])
AC_CHECK_FUNCS(ceil copysign cos cosf fabs floor log pow scalbn sin sinf sqrt) AC_CHECK_FUNCS(ceil copysign cos cosf fabs floor log pow scalbn sin sinf sqrt)
......
...@@ -151,6 +151,7 @@ ...@@ -151,6 +151,7 @@
#undef HAVE_SIGACTION #undef HAVE_SIGACTION
#undef HAVE_SETJMP #undef HAVE_SETJMP
#undef HAVE_NANOSLEEP #undef HAVE_NANOSLEEP
#undef HAVE_SYSCONF
#undef HAVE_SYSCTLBYNAME #undef HAVE_SYSCTLBYNAME
#undef HAVE_CLOCK_GETTIME #undef HAVE_CLOCK_GETTIME
#undef HAVE_GETPAGESIZE #undef HAVE_GETPAGESIZE
......
...@@ -108,6 +108,7 @@ typedef unsigned long uintptr_t; ...@@ -108,6 +108,7 @@ typedef unsigned long uintptr_t;
#define HAVE_SIGACTION 1 #define HAVE_SIGACTION 1
#define HAVE_SETJMP 1 #define HAVE_SETJMP 1
#define HAVE_NANOSLEEP 1 #define HAVE_NANOSLEEP 1
#define HAVE_SYSCONF 1
#define HAVE_SYSCTLBYNAME 1 #define HAVE_SYSCTLBYNAME 1
/* enable iPhone version of Core Audio driver */ /* enable iPhone version of Core Audio driver */
......
...@@ -106,6 +106,7 @@ ...@@ -106,6 +106,7 @@
#define HAVE_SIGACTION 1 #define HAVE_SIGACTION 1
#define HAVE_SETJMP 1 #define HAVE_SETJMP 1
#define HAVE_NANOSLEEP 1 #define HAVE_NANOSLEEP 1
#define HAVE_SYSCONF 1
#define HAVE_SYSCTLBYNAME 1 #define HAVE_SYSCTLBYNAME 1
/* Enable various audio drivers */ /* Enable various audio drivers */
......
...@@ -25,6 +25,9 @@ ...@@ -25,6 +25,9 @@
#include "SDL_cpuinfo.h" #include "SDL_cpuinfo.h"
#ifdef HAVE_SYSCONF
#include <unistd.h>
#endif
#ifdef HAVE_SYSCTLBYNAME #ifdef HAVE_SYSCTLBYNAME
#include <sys/types.h> #include <sys/types.h>
#include <sys/sysctl.h> #include <sys/sysctl.h>
...@@ -297,21 +300,26 @@ int ...@@ -297,21 +300,26 @@ int
SDL_GetCPUCount() SDL_GetCPUCount()
{ {
if (!SDL_CPUCount) { if (!SDL_CPUCount) {
#ifdef HAVE_SYSCONF
if (SDL_CPUCount <= 0) {
SDL_CPUCount = (int)sysconf(_SC_NPROCESSORS_ONLN);
}
#endif
#ifdef HAVE_SYSCTLBYNAME #ifdef HAVE_SYSCTLBYNAME
{ if (SDL_CPUCount <= 0) {
size_t size = sizeof(SDL_CPUCount); size_t size = sizeof(SDL_CPUCount);
sysctlbyname("hw.ncpu", &SDL_CPUCount, &size, NULL, 0); sysctlbyname("hw.ncpu", &SDL_CPUCount, &size, NULL, 0);
} }
#endif #endif
#ifdef __WIN32__ #ifdef __WIN32__
{ if (SDL_CPUCount <= 0) {
SYSTEM_INFO info; SYSTEM_INFO info;
GetSystemInfo(&info); GetSystemInfo(&info);
SDL_CPUCount = info.dwNumberOfProcessors; SDL_CPUCount = info.dwNumberOfProcessors;
} }
#endif #endif
/* There has to be at least 1, right? :) */ /* There has to be at least 1, right? :) */
if (!SDL_CPUCount) { if (SDL_CPUCount <= 0) {
SDL_CPUCount = 1; SDL_CPUCount = 1;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment