@@ -1877,6 +1877,7 @@ fn test_freebsd(target: &str) {
18771877 "sys/vmmeter.h" ,
18781878 "sys/wait.h" ,
18791879 "libprocstat.h" ,
1880+ "devstat.h" ,
18801881 "syslog.h" ,
18811882 "termios.h" ,
18821883 "time.h" ,
@@ -1890,8 +1891,19 @@ fn test_freebsd(target: &str) {
18901891 cfg. type_name ( move |ty, is_struct, is_union| {
18911892 match ty {
18921893 // Just pass all these through, no need for a "struct" prefix
1893- "FILE" | "fd_set" | "Dl_info" | "DIR" | "Elf32_Phdr" | "Elf64_Phdr"
1894- | "Elf32_Auxinfo" | "Elf64_Auxinfo" => ty. to_string ( ) ,
1894+ "FILE"
1895+ | "fd_set"
1896+ | "Dl_info"
1897+ | "DIR"
1898+ | "Elf32_Phdr"
1899+ | "Elf64_Phdr"
1900+ | "Elf32_Auxinfo"
1901+ | "Elf64_Auxinfo"
1902+ | "devstat_select_mode"
1903+ | "devstat_support_flags"
1904+ | "devstat_type_flags"
1905+ | "devstat_match_flags"
1906+ | "devstat_priority" => ty. to_string ( ) ,
18951907
18961908 // FIXME: https://github.com/rust-lang/libc/issues/1273
18971909 "sighandler_t" => "sig_t" . to_string ( ) ,
@@ -1919,7 +1931,9 @@ fn test_freebsd(target: &str) {
19191931 }
19201932 // Field is named `type` in C but that is a Rust keyword,
19211933 // so these fields are translated to `type_` in the bindings.
1922- "type_" if struct_ == "rtprio" || struct_ == "sockstat" => "type" . to_string ( ) ,
1934+ "type_" if struct_ == "rtprio" => "type" . to_string ( ) ,
1935+ "type_" if struct_ == "sockstat" => "type" . to_string ( ) ,
1936+ "type_" if struct_ == "devstat_match_table" => "type" . to_string ( ) ,
19231937 s => s. to_string ( ) ,
19241938 }
19251939 } ) ;
@@ -2261,6 +2275,9 @@ fn test_freebsd(target: &str) {
22612275 ( "if_data" , "__ifi_lastchange" ) => true ,
22622276 ( "ifreq" , "ifr_ifru" ) => true ,
22632277
2278+ // anonymous struct
2279+ ( "devstat" , "dev_links" ) => true ,
2280+
22642281 // FIXME: structs too complicated to bind for now...
22652282 ( "kinfo_proc" , "ki_paddr" ) => true ,
22662283 ( "kinfo_proc" , "ki_addr" ) => true ,
@@ -2278,6 +2295,11 @@ fn test_freebsd(target: &str) {
22782295
22792296 // `__sem_base` is a private struct field
22802297 ( "semid_ds" , "__sem_base" ) => true ,
2298+
2299+ // `snap_time` is a `long double`, but it's a nightmare to bind correctly in rust
2300+ // for the moment, so it's a best effort thing...
2301+ ( "statinfo" , "snap_time" ) => true ,
2302+
22812303 _ => false ,
22822304 }
22832305 } ) ;
0 commit comments