[x264-devel] [PATCH] Linux x264_cpu_num_processors(): use glibc macros

Rafaël Carré rafael.carre at gmail.com
Sat Jun 25 22:20:30 CEST 2011


The cpu_set_t structure is considered opaque.

Also handle sched_getaffinity() error case if
"cpusetsize is smaller than the size of the affinity mask used by the kernel."
---
 common/cpu.c |    8 +-------
 1 files changed, 1 insertions(+), 7 deletions(-)

diff --git a/common/cpu.c b/common/cpu.c
index 2d43e85..0485203 100644
--- a/common/cpu.c
+++ b/common/cpu.c
@@ -365,14 +365,8 @@ int x264_cpu_num_processors( void )
     return sysconf( _SC_NPROCESSORS_ONLN );
 
 #elif SYS_LINUX
-    unsigned int bit;
-    int np;
     cpu_set_t p_aff;
-    memset( &p_aff, 0, sizeof(p_aff) );
-    sched_getaffinity( 0, sizeof(p_aff), &p_aff );
-    for( np = 0, bit = 0; bit < sizeof(p_aff); bit++ )
-        np += (((uint8_t *)&p_aff)[bit / 8] >> (bit % 8)) & 1;
-    return np;
+    return sched_getaffinity( 0, sizeof p_aff, &p_aff ) ? 1 : CPU_COUNT(p_aff);
 
 #elif SYS_BEOS
     system_info info;
-- 
1.7.4.1




More information about the x264-devel mailing list