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