@@ -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
} ) ;
@@ -2146,6 +2160,10 @@ fn test_freebsd(target: &str) {
2146
2160
// for now, it doesn't matter too much...
2147
2161
"kvm_t" => true ,
2148
2162
2163
+ // The C norm is a nightmare to follow for `long double`. Its sized is checked since
2164
+ // it's being used as a struct field type in any case.
2165
+ "c_longdouble" => true ,
2166
+
2149
2167
_ => false ,
2150
2168
}
2151
2169
} ) ;
@@ -2170,6 +2188,9 @@ fn test_freebsd(target: &str) {
2170
2188
// obsolete version
2171
2189
"vmtotal" if Some ( 11 ) == freebsd_ver => true ,
2172
2190
2191
+ // A wrapper around "long double".
2192
+ "LongDoubleWrap" => true ,
2193
+
2173
2194
_ => false ,
2174
2195
}
2175
2196
} ) ;
@@ -2200,6 +2221,10 @@ fn test_freebsd(target: &str) {
2200
2221
// https://github.com/gnzlbg/ctest/issues/68
2201
2222
"lio_listio" => true ,
2202
2223
2224
+ // It returns a `long double`, but it's a nightmare to bind correctly in rust
2225
+ // for the moment, so it's a best effort thing...
2226
+ "devstat_compute_etime" => true ,
2227
+
2203
2228
_ => false ,
2204
2229
}
2205
2230
} ) ;
@@ -2255,6 +2280,9 @@ fn test_freebsd(target: &str) {
2255
2280
( "if_data" , "__ifi_lastchange" ) => true ,
2256
2281
( "ifreq" , "ifr_ifru" ) => true ,
2257
2282
2283
+ // anonymous struct
2284
+ ( "devstat" , "dev_links" ) => true ,
2285
+
2258
2286
// FIXME: structs too complicated to bind for now...
2259
2287
( "kinfo_proc" , "ki_paddr" ) => true ,
2260
2288
( "kinfo_proc" , "ki_addr" ) => true ,
@@ -2272,6 +2300,11 @@ fn test_freebsd(target: &str) {
2272
2300
2273
2301
// `__sem_base` is a private struct field
2274
2302
( "semid_ds" , "__sem_base" ) => true ,
2303
+
2304
+ // `snap_time` is a `long double`, but it's a nightmare to bind correctly in rust
2305
+ // for the moment, so it's a best effort thing...
2306
+ ( "statinfo" , "snap_time" ) => true ,
2307
+
2275
2308
_ => false ,
2276
2309
}
2277
2310
} ) ;
0 commit comments