Hello!
We should not call CPU_COUNT when not defined in glibc.
2011-08-03 Uros Bizjak <[email protected]>
* config/linux/proc.c (gomp_cpuset_popcount): Rename from
cpuset_popcount. No more static.
(gomp_init_num_threads): Update call to cpuset_popcount.
(get_num_procs): Ditto.
* config/linux/affinity.c: Call gomp_cpuset_popcount.
* libgomp.h (gomp_cpuset_popcount): Declare.
Bootstrapped on x86_64-pc-linux-gnu, testing in progress.
OK if it passes?
Uros.
Index: libgomp.h
===================================================================
--- libgomp.h (revision 177229)
+++ libgomp.h (working copy)
@@ -463,6 +463,10 @@ extern unsigned gomp_resolve_num_threads
/* proc.c (in config/) */
+#ifdef HAVE_PTHREAD_AFFINITY_NP
+extern unsigned long gomp_cpuset_popcount (cpu_set_t *);
+#endif
+
extern void gomp_init_num_threads (void);
extern unsigned gomp_dynamic_max_threads (void);
Index: config/linux/proc.c
===================================================================
--- config/linux/proc.c (revision 177229)
+++ config/linux/proc.c (working copy)
@@ -40,8 +40,8 @@
#endif
#ifdef HAVE_PTHREAD_AFFINITY_NP
-static unsigned long
-cpuset_popcount (cpu_set_t *cpusetp)
+unsigned long
+gomp_cpuset_popcount (cpu_set_t *cpusetp)
{
#ifdef CPU_COUNT
/* glibc 2.6 and above provide a macro for this. */
@@ -76,7 +76,7 @@ gomp_init_num_threads (void)
if (pthread_getaffinity_np (pthread_self (), sizeof (cpuset), &cpuset) == 0)
{
/* Count only the CPUs this process can use. */
- gomp_global_icv.nthreads_var = cpuset_popcount (&cpuset);
+ gomp_global_icv.nthreads_var = gomp_cpuset_popcount (&cpuset);
if (gomp_global_icv.nthreads_var == 0)
gomp_global_icv.nthreads_var = 1;
return;
@@ -99,7 +99,7 @@ get_num_procs (void)
if (pthread_getaffinity_np (pthread_self (), sizeof (cpuset),
&cpuset) == 0)
{
- int ret = cpuset_popcount (&cpuset);
+ int ret = gomp_cpuset_popcount (&cpuset);
return ret != 0 ? ret : 1;
}
}
Index: config/linux/affinity.c
===================================================================
--- config/linux/affinity.c (revision 177229)
+++ config/linux/affinity.c (working copy)
@@ -56,7 +56,7 @@ gomp_init_affinity (void)
CPU_ZERO (&cpusetnew);
if (gomp_cpu_affinity_len == 0)
{
- unsigned long count = CPU_COUNT (&cpuset);
+ unsigned long count = gomp_cpuset_popcount (&cpuset);
if (count >= 65536)
count = 65536;
gomp_cpu_affinity = malloc (count * sizeof (unsigned short));