]> granicus.if.org Git - libx264/commitdiff
Linux x264_cpu_num_processors(): use glibc macros
authorRafaël Carré <rafael.carre@gmail.com>
Fri, 15 Jul 2011 01:51:43 +0000 (18:51 -0700)
committerFiona Glaser <fiona@x264.com>
Thu, 21 Jul 2011 02:48:25 +0000 (19:48 -0700)
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

index 7fffc4dbdf158493e7b4043c240d28a9f9901cf1..10988c3fffc10aeffb7389c4faa8af238cb2d721 100644 (file)
@@ -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;