33//! <https://developer.apple.com/documentation/kernel/1387446-sysctlbyname/determining_instruction_set_characteristics>
44
55use crate :: detect:: { cache, Feature } ;
6+ use core:: ffi:: CStr ;
67
78#[ inline]
8- fn _sysctlbyname ( name : & str ) -> bool {
9+ fn _sysctlbyname ( name : & CStr ) -> bool {
910 use libc;
1011
1112 let mut enabled: i32 = 0 ;
@@ -14,7 +15,7 @@ fn _sysctlbyname(name: &str) -> bool {
1415
1516 let ret = unsafe {
1617 libc:: sysctlbyname (
17- name. as_ptr ( ) as * const i8 ,
18+ name. as_ptr ( ) ,
1819 enabled_ptr,
1920 & mut enabled_len,
2021 core:: ptr:: null_mut ( ) ,
@@ -38,35 +39,35 @@ pub(crate) fn detect_features() -> cache::Initializer {
3839 }
3940 } ;
4041
41- let asimd = _sysctlbyname ( "hw.optional.AdvSIMD\0 " ) ;
42- let pmull = _sysctlbyname ( "hw.optional.arm.FEAT_PMULL\0 " ) ;
43- let fp = _sysctlbyname ( "hw.optional.floatingpoint\0 " ) ;
44- let fp16 = _sysctlbyname ( "hw.optional.arm.FEAT_FP16\0 " ) ;
45- let crc = _sysctlbyname ( "hw.optional.armv8_crc32\0 " ) ;
46- let lse = _sysctlbyname ( "hw.optional.arm.FEAT_LSE\0 " ) ;
47- let lse2 = _sysctlbyname ( "hw.optional.arm.FEAT_LSE2\0 " ) ;
48- let rdm = _sysctlbyname ( "hw.optional.arm.FEAT_RDM\0 " ) ;
49- let rcpc = _sysctlbyname ( "hw.optional.arm.FEAT_LRCPC\0 " ) ;
50- let rcpc2 = _sysctlbyname ( "hw.optional.arm.FEAT_LRCPC2\0 " ) ;
51- let dotprod = _sysctlbyname ( "hw.optional.arm.FEAT_DotProd\0 " ) ;
52- let fhm = _sysctlbyname ( "hw.optional.arm.FEAT_FHM\0 " ) ;
53- let flagm = _sysctlbyname ( "hw.optional.arm.FEAT_FlagM\0 " ) ;
54- let ssbs = _sysctlbyname ( "hw.optional.arm.FEAT_SSBS\0 " ) ;
55- let sb = _sysctlbyname ( "hw.optional.arm.FEAT_SB\0 " ) ;
56- let paca = _sysctlbyname ( "hw.optional.arm.FEAT_PAuth\0 " ) ;
57- let dpb = _sysctlbyname ( "hw.optional.arm.FEAT_DPB\0 " ) ;
58- let dpb2 = _sysctlbyname ( "hw.optional.arm.FEAT_DPB2\0 " ) ;
59- let frintts = _sysctlbyname ( "hw.optional.arm.FEAT_FRINTTS\0 " ) ;
60- let i8mm = _sysctlbyname ( "hw.optional.arm.FEAT_I8MM\0 " ) ;
61- let bf16 = _sysctlbyname ( "hw.optional.arm.FEAT_BF16\0 " ) ;
62- let bti = _sysctlbyname ( "hw.optional.arm.FEAT_BTI\0 " ) ;
63- let fcma = _sysctlbyname ( "hw.optional.arm.FEAT_FCMA\0 " ) ;
64- let aes = _sysctlbyname ( "hw.optional.arm.FEAT_AES\0 " ) ;
65- let sha1 = _sysctlbyname ( "hw.optional.arm.FEAT_SHA1\0 " ) ;
66- let sha2 = _sysctlbyname ( "hw.optional.arm.FEAT_SHA256\0 " ) ;
67- let sha3 = _sysctlbyname ( "hw.optional.arm.FEAT_SHA3\0 " ) ;
68- let sha512 = _sysctlbyname ( "hw.optional.arm.FEAT_SHA512\0 " ) ;
69- let jsconv = _sysctlbyname ( "hw.optional.arm.FEAT_JSCVT\0 " ) ;
42+ let asimd = _sysctlbyname ( c "hw.optional.AdvSIMD") ;
43+ let pmull = _sysctlbyname ( c "hw.optional.arm.FEAT_PMULL") ;
44+ let fp = _sysctlbyname ( c "hw.optional.floatingpoint") ;
45+ let fp16 = _sysctlbyname ( c "hw.optional.arm.FEAT_FP16") ;
46+ let crc = _sysctlbyname ( c "hw.optional.armv8_crc32") ;
47+ let lse = _sysctlbyname ( c "hw.optional.arm.FEAT_LSE") ;
48+ let lse2 = _sysctlbyname ( c "hw.optional.arm.FEAT_LSE2") ;
49+ let rdm = _sysctlbyname ( c "hw.optional.arm.FEAT_RDM") ;
50+ let rcpc = _sysctlbyname ( c "hw.optional.arm.FEAT_LRCPC") ;
51+ let rcpc2 = _sysctlbyname ( c "hw.optional.arm.FEAT_LRCPC2") ;
52+ let dotprod = _sysctlbyname ( c "hw.optional.arm.FEAT_DotProd") ;
53+ let fhm = _sysctlbyname ( c "hw.optional.arm.FEAT_FHM") ;
54+ let flagm = _sysctlbyname ( c "hw.optional.arm.FEAT_FlagM") ;
55+ let ssbs = _sysctlbyname ( c "hw.optional.arm.FEAT_SSBS") ;
56+ let sb = _sysctlbyname ( c "hw.optional.arm.FEAT_SB") ;
57+ let paca = _sysctlbyname ( c "hw.optional.arm.FEAT_PAuth") ;
58+ let dpb = _sysctlbyname ( c "hw.optional.arm.FEAT_DPB") ;
59+ let dpb2 = _sysctlbyname ( c "hw.optional.arm.FEAT_DPB2") ;
60+ let frintts = _sysctlbyname ( c "hw.optional.arm.FEAT_FRINTTS") ;
61+ let i8mm = _sysctlbyname ( c "hw.optional.arm.FEAT_I8MM") ;
62+ let bf16 = _sysctlbyname ( c "hw.optional.arm.FEAT_BF16") ;
63+ let bti = _sysctlbyname ( c "hw.optional.arm.FEAT_BTI") ;
64+ let fcma = _sysctlbyname ( c "hw.optional.arm.FEAT_FCMA") ;
65+ let aes = _sysctlbyname ( c "hw.optional.arm.FEAT_AES") ;
66+ let sha1 = _sysctlbyname ( c "hw.optional.arm.FEAT_SHA1") ;
67+ let sha2 = _sysctlbyname ( c "hw.optional.arm.FEAT_SHA256") ;
68+ let sha3 = _sysctlbyname ( c "hw.optional.arm.FEAT_SHA3") ;
69+ let sha512 = _sysctlbyname ( c "hw.optional.arm.FEAT_SHA512") ;
70+ let jsconv = _sysctlbyname ( c "hw.optional.arm.FEAT_JSCVT") ;
7071
7172 enable_feature ( Feature :: asimd, asimd) ;
7273 enable_feature ( Feature :: pmull, pmull) ;
0 commit comments