@@ -1877,6 +1877,7 @@ fn test_freebsd(target: &str) {
1877
1877
"sys/vmmeter.h" ,
1878
1878
"sys/wait.h" ,
1879
1879
"libprocstat.h" ,
1880
+ "devstat.h" ,
1880
1881
"syslog.h" ,
1881
1882
"termios.h" ,
1882
1883
"time.h" ,
@@ -1890,8 +1891,19 @@ fn test_freebsd(target: &str) {
1890
1891
cfg. type_name ( move |ty, is_struct, is_union| {
1891
1892
match ty {
1892
1893
// 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 ( ) ,
1895
1907
1896
1908
// FIXME: https://github.com/rust-lang/libc/issues/1273
1897
1909
"sighandler_t" => "sig_t" . to_string ( ) ,
@@ -1919,7 +1931,9 @@ fn test_freebsd(target: &str) {
1919
1931
}
1920
1932
// Field is named `type` in C but that is a Rust keyword,
1921
1933
// 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 ( ) ,
1923
1937
s => s. to_string ( ) ,
1924
1938
}
1925
1939
} ) ;
@@ -2206,6 +2220,10 @@ fn test_freebsd(target: &str) {
2206
2220
// https://github.com/gnzlbg/ctest/issues/68
2207
2221
"lio_listio" => true ,
2208
2222
2223
+ // It returns a `long double`, but it's a nightmare to bind correctly in rust
2224
+ // for the moment, so it's a best effort thing...
2225
+ "devstat_compute_etime" => true ,
2226
+
2209
2227
_ => false ,
2210
2228
}
2211
2229
} ) ;
@@ -2261,6 +2279,9 @@ fn test_freebsd(target: &str) {
2261
2279
( "if_data" , "__ifi_lastchange" ) => true ,
2262
2280
( "ifreq" , "ifr_ifru" ) => true ,
2263
2281
2282
+ // anonymous struct
2283
+ ( "devstat" , "dev_links" ) => true ,
2284
+
2264
2285
// FIXME: structs too complicated to bind for now...
2265
2286
( "kinfo_proc" , "ki_paddr" ) => true ,
2266
2287
( "kinfo_proc" , "ki_addr" ) => true ,
@@ -2278,6 +2299,11 @@ fn test_freebsd(target: &str) {
2278
2299
2279
2300
// `__sem_base` is a private struct field
2280
2301
( "semid_ds" , "__sem_base" ) => true ,
2302
+
2303
+ // `snap_time` is a `long double`, but it's a nightmare to bind correctly in rust
2304
+ // for the moment, so it's a best effort thing...
2305
+ ( "statinfo" , "snap_time" ) => true ,
2306
+
2281
2307
_ => false ,
2282
2308
}
2283
2309
} ) ;
0 commit comments