[EMAIL PROTECTED] wrote:
Author: faridz
Date: Wed Jun 27 06:17:27 2007
New Revision: 551156
URL: http://svn.apache.org/viewvc?view=rev&rev=551156
Log:
2007-06-27 Farid Zaripov <[EMAIL PROTECTED]>
* thread.cpp (rw_get_cpus) [_WIN32]: Added Windows version of the
function.
Cool, thanks! Eventually, I'd like to do it this way (i.e.,
programmatically as opposed to using the shell) on all
platforms.
Martin
Modified:
incubator/stdcxx/trunk/tests/src/thread.cpp
Modified: incubator/stdcxx/trunk/tests/src/thread.cpp
URL:
http://svn.apache.org/viewvc/incubator/stdcxx/trunk/tests/src/thread.cpp?view=diff&rev=551156&r1=551155&r2=551156
==============================================================================
--- incubator/stdcxx/trunk/tests/src/thread.cpp (original)
+++ incubator/stdcxx/trunk/tests/src/thread.cpp Wed Jun 27 06:17:27 2007
@@ -31,11 +31,12 @@
#include <rw_thread.h>
#include <stddef.h> // for size_t
-#include <stdio.h> // for FILE, fscanf(), popen()
#include <string.h> // for memset()
-#ifdef _WIN32
-# define popen(name, mode) _popen(name, mode)
+#ifndef _WIN32
+# include <stdio.h> // for FILE, fscanf(), popen()
+#else // _WIN32
+# include <windows.h> // for GetSystemInfo()
#endif // _WIN32
/**************************************************************************/
@@ -380,45 +381,44 @@
_TEST_EXPORT int
rw_get_cpus ()
{
+#ifndef _WIN32
+
const char* const cmd = {
// shell command(s) to obtain the number of processors
-#ifdef _RWSTD_OS_AIX
+# ifdef _RWSTD_OS_AIX
// AIX: /etc/lsdev -Cc processor | wc -l
"/etc/lsdev -Cc processor | /usr/bin/wc -l"
-#elif defined (_RWSTD_OS_LINUX)
+# elif defined (_RWSTD_OS_LINUX)
// Linux: cat /proc/cpuinfo | grep processor | wc -l
"/usr/bin/cat /proc/cpuinfo "
" | /usr/bin/grep processor "
" | /usr/bin/wc -l"
-#elif defined (_RWSTD_OS_FREEBSD)
+# elif defined (_RWSTD_OS_FREEBSD)
// FreeBSD: /sbin/sysctl -n hw.ncpu
"/sbin/sysctl -n hw.ncpu"
-#elif defined (_RWSTD_OS_HP_UX)
+# elif defined (_RWSTD_OS_HP_UX)
// HP-UX: /etc/ioscan -k -C processor | grep processor | wc -l
"/etc/ioscan -k -C processor "
" | /usr/bin/grep processor "
" | /usr/bin/wc -l"
-#elif defined (_RWSTD_OS_IRIX64)
+# elif defined (_RWSTD_OS_IRIX64)
// IRIX: hinv | /usr/bin/grep "^[1-9][0-9]* .* Processor"
"/sbin/hinv "
" | /usr/bin/grep \"^[1-9][0-9]* .* Processor\""
-#elif defined (_RWSTD_OS_OSF1)
+# elif defined (_RWSTD_OS_OSF1)
// Tru64 UNIX: /usr/sbin/psrinfo | grep online | wc -l
"/usr/sbin/psrinfo "
" | /usr/bin/grep on[-]*line "
" | /usr/bin wc -l"
-#elif defined (_RWSTD_OS_SUNOS)
+# elif defined (_RWSTD_OS_SUNOS)
// Solaris: /usr/bin/mpstat | wc -l
"/usr/bin/mpstat "
" | /usr/bin/grep -v \"^CPU\" "
" | /usr/bin/wc -l"
-#elif defined (_RWSTD_OS_WINDOWS)
- // Windows: ???
- 0
-#else
+# else
0
-#endif
+# endif
};
@@ -441,6 +441,14 @@
}
return ncpus;
+
+#else // _WIN32
+
+ SYSTEM_INFO info;
+ GetSystemInfo (&info);
+ return int (info.dwNumberOfProcessors);
+
+#endif // _WIN32
}
/**************************************************************************/