diff --git a/legacy/eina/src/include/eina_cpu.h b/legacy/eina/src/include/eina_cpu.h index c7cc8c4bd9..c637d93aa6 100644 --- a/legacy/eina/src/include/eina_cpu.h +++ b/legacy/eina/src/include/eina_cpu.h @@ -34,5 +34,6 @@ typedef enum _Eina_Cpu_Features } Eina_Cpu_Features; EAPI Eina_Cpu_Features eina_cpu_features_get(void); +EAPI int eina_cpu_count(void); #endif /* EINA_CPU_H_ */ diff --git a/legacy/eina/src/lib/eina_cpu.c b/legacy/eina/src/lib/eina_cpu.c index 4de30a36cb..4f3861d34a 100644 --- a/legacy/eina/src/lib/eina_cpu.c +++ b/legacy/eina/src/lib/eina_cpu.c @@ -20,6 +20,14 @@ # include "config.h" #endif +#ifdef EFL_HAVE_PTHREAD +# define _GNU_SOURCE +# include +# include + +# define TH_MAX 8 +#endif + #include "eina_cpu.h" /*============================================================================* @@ -99,3 +107,26 @@ EAPI Eina_Cpu_Features eina_cpu_features_get(void) #endif return ecf; } + +EAPI int eina_cpu_count(void) +{ +#ifdef EFL_HAVE_PTHREAD + cpu_set_t cpu; + int i; + static int cpus = 0; + + if (cpus != 0) return cpus; + + CPU_ZERO(&cpu); + if (sched_getaffinity(0, sizeof(cpu), &cpu) != 0) + return 1; + for (i = 0; i < TH_MAX; i++) + { + if (CPU_ISSET(i, &cpu)) cpus = i + 1; + else break; + } + return cpus; +#else + return 1; +#endif +} diff --git a/legacy/evas/src/lib/engines/common/evas_cpu.c b/legacy/evas/src/lib/engines/common/evas_cpu.c index 68a38216d2..1cc567f497 100644 --- a/legacy/evas/src/lib/engines/common/evas_cpu.c +++ b/legacy/evas/src/lib/engines/common/evas_cpu.c @@ -245,30 +245,3 @@ evas_common_cpu_end_opt(void) { } #endif - -EAPI int -evas_common_cpu_count(void) -{ -#ifdef BUILD_PTHREAD - cpu_set_t cpu; - int i; - static int cpus = 0; - - if (cpus != 0) return cpus; - - CPU_ZERO(&cpu); - if (sched_getaffinity(0, sizeof(cpu), &cpu) != 0) - { - printf("[Evas] could not get cpu affinity: %s\n", strerror(errno)); - return 1; - } - for (i = 0; i < TH_MAX; i++) - { - if (CPU_ISSET(i, &cpu)) cpus = i + 1; - else break; - } - return cpus; -#else - return 1; -#endif -} diff --git a/legacy/evas/src/lib/engines/common/evas_pipe.c b/legacy/evas/src/lib/engines/common/evas_pipe.c index 8a2faf587b..9d35b257c9 100644 --- a/legacy/evas/src/lib/engines/common/evas_pipe.c +++ b/legacy/evas/src/lib/engines/common/evas_pipe.c @@ -126,7 +126,7 @@ evas_common_pipe_begin(RGBA_Image *im) { int cpunum; - cpunum = evas_common_cpu_count(); + cpunum = eina_cpu_count(); thread_num = cpunum; if (thread_num == 1) return; pthread_barrier_init(&(thbarrier[0]), NULL, thread_num + 1); diff --git a/legacy/evas/src/lib/include/evas_common.h b/legacy/evas/src/lib/include/evas_common.h index f4b72867f0..c0c5cde71c 100644 --- a/legacy/evas/src/lib/include/evas_common.h +++ b/legacy/evas/src/lib/include/evas_common.h @@ -1069,7 +1069,6 @@ int evas_common_cpu_have_cpuid (void); int evas_common_cpu_has_feature (unsigned int feature); EAPI void evas_common_cpu_can_do (int *mmx, int *sse, int *sse2); EAPI void evas_common_cpu_end_opt (void); -EAPI int evas_common_cpu_count (void); /****/ #include "../engines/common/evas_blend.h" diff --git a/legacy/evas/src/modules/engines/software_generic/evas_engine.c b/legacy/evas/src/modules/engines/software_generic/evas_engine.c index 2816dfb5cd..10776d7a14 100644 --- a/legacy/evas/src/modules/engines/software_generic/evas_engine.c +++ b/legacy/evas/src/modules/engines/software_generic/evas_engine.c @@ -1132,7 +1132,7 @@ module_open(Evas_Module *em) { if (!em) return 0; em->functions = (void *)(&func); - cpunum = evas_common_cpu_count(); + cpunum = eina_cpu_count(); return 1; }