@@ -320,6 +320,7 @@ pub fn available_parallelism() -> io::Result<NonZero<usize>> {
320
320
target_os = "solaris" ,
321
321
target_os = "illumos" ,
322
322
target_os = "aix" ,
323
+ target_os = "freebsd" ,
323
324
) ) ] {
324
325
#[ allow( unused_assignments) ]
325
326
#[ allow( unused_mut) ]
@@ -328,9 +329,17 @@ pub fn available_parallelism() -> io::Result<NonZero<usize>> {
328
329
#[ cfg( any( target_os = "android" , target_os = "linux" ) ) ]
329
330
{
330
331
quota = cgroups:: quota( ) . max( 1 ) ;
331
- let mut set: libc:: cpu_set_t = unsafe { mem:: zeroed( ) } ;
332
+ }
333
+
334
+ #[ cfg( any( target_os = "android" , target_os = "linux" , target_os = "freebsd" ) ) ]
335
+ {
336
+ #[ cfg( not( target_os = "freebsd" ) ) ]
337
+ type cpuset = libc:: cpu_set_t;
338
+ #[ cfg( target_os = "freebsd" ) ]
339
+ type cpuset = libc:: cpuset_t;
340
+ let mut set: cpuset = unsafe { mem:: zeroed( ) } ;
332
341
unsafe {
333
- if libc:: sched_getaffinity( 0 , mem:: size_of:: <libc :: cpu_set_t >( ) , & mut set) == 0 {
342
+ if libc:: sched_getaffinity( 0 , mem:: size_of:: <cpuset >( ) , & mut set) == 0 {
334
343
let count = libc:: CPU_COUNT ( & set) as usize ;
335
344
let count = count. min( quota) ;
336
345
@@ -355,32 +364,12 @@ pub fn available_parallelism() -> io::Result<NonZero<usize>> {
355
364
}
356
365
}
357
366
} else if #[ cfg( any(
358
- target_os = "freebsd" ,
359
367
target_os = "dragonfly" ,
360
368
target_os = "openbsd" ,
361
369
target_os = "netbsd" ,
362
370
) ) ] {
363
371
use crate :: ptr;
364
372
365
- #[ cfg( target_os = "freebsd" ) ]
366
- {
367
- let mut set: libc:: cpuset_t = unsafe { mem:: zeroed( ) } ;
368
- unsafe {
369
- if libc:: cpuset_getaffinity(
370
- libc:: CPU_LEVEL_WHICH ,
371
- libc:: CPU_WHICH_PID ,
372
- -1 ,
373
- mem:: size_of:: <libc:: cpuset_t>( ) ,
374
- & mut set,
375
- ) == 0 {
376
- let count = libc:: CPU_COUNT ( & set) as usize ;
377
- if count > 0 {
378
- return Ok ( NonZero :: new_unchecked( count) ) ;
379
- }
380
- }
381
- }
382
- }
383
-
384
373
#[ cfg( target_os = "netbsd" ) ]
385
374
{
386
375
unsafe {
0 commit comments