Skip to content

Commit e9ef120

Browse files
committed
Use getsystemcfg to get SMT threads
1 parent 35c04d9 commit e9ef120

1 file changed

Lines changed: 4 additions & 48 deletions

File tree

src/lib.rs

Lines changed: 4 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -342,57 +342,13 @@ fn get_num_physical_cpus() -> usize {
342342

343343
#[cfg(target_os = "aix")]
344344
fn get_smt_threads_aix() -> Option<usize> {
345-
use std::mem;
346-
347-
const LPAR_INFO_FORMAT1: i32 = 1;
348-
349-
#[repr(C)]
350-
struct lpar_info_format1 {
351-
version: i32,
352-
pad0: i32,
353-
max_memory: u64,
354-
min_memory: u64,
355-
memory_region: u64,
356-
dispatch_wheel_time: u64,
357-
lpar_number: u32,
358-
lpar_flags: u32,
359-
max_pcpus_in_sys: u32,
360-
min_vcpus: u32,
361-
max_vcpus: u32,
362-
min_lcpus: u32,
363-
max_lcpus: u32,
364-
minimum_capacity: u32,
365-
maximum_capacity: u32,
366-
capacity_increment: u32,
367-
smt_threads: u16,
368-
pad1: [u8; 2],
369-
num_lpars: u32,
370-
lpar_name: [u8; 256],
371-
desired_capacity: u32,
372-
desired_vcpus: u32,
373-
desired_memory: u64,
374-
servpar_id: u32,
375-
true_max_memory: u64,
376-
true_min_memory: u64,
377-
ame_max_memory: u64,
378-
ame_min_memory: u64,
379-
spcm_status: u32,
380-
spcm_max: u32,
381-
}
382-
383-
extern "C" {
384-
fn lpar_get_info(command: i32, buffer: *mut libc::c_void, size: usize) -> i32;
385-
}
386-
387-
let mut lpar_info: lpar_info_format1 = unsafe { mem::zeroed() };
388-
let info_size = mem::size_of::<lpar_info_format1>() as usize;
389-
let ret = unsafe {
390-
lpar_get_info(LPAR_INFO_FORMAT1, mem::transmute(&mut lpar_info), info_size)
345+
let smt = unsafe {
346+
libc::getsystemcfg(libc::SC_SMT_TC)
391347
};
392-
if ret != 0 {
348+
if smt == u64::MAX {
393349
return None;
394350
}
395-
Some(lpar_info.smt_threads as usize)
351+
Some(smt as usize)
396352
}
397353

398354
#[cfg(any(

0 commit comments

Comments
 (0)