From: Rafaël Carré Date: Fri, 15 Jul 2011 01:51:43 +0000 (-0700) Subject: Linux x264_cpu_num_processors(): use glibc macros X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f7e6610ba12319d68833526676b16879aaff415c;p=libx264 Linux x264_cpu_num_processors(): use glibc macros 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." --- diff --git a/common/cpu.c b/common/cpu.c index 7fffc4db..10988c3f 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;