===================================================================
@@ -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);
===================================================================
@@ -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;
}
}
===================================================================
@@ -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));