Skip to content

Commit ad8e2c2

Browse files
Add devstat items
1 parent ddc070c commit ad8e2c2

File tree

2 files changed

+431
-3
lines changed

2 files changed

+431
-3
lines changed

libc-test/build.rs

+36-3
Original file line numberDiff line numberDiff line change
@@ -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
});
@@ -2149,6 +2163,10 @@ fn test_freebsd(target: &str) {
21492163
// for now, it doesn't matter too much...
21502164
"kvm_t" => true,
21512165

2166+
// The C norm is a nightmare to follow for `long double`. Its sized is checked since
2167+
// it's being used as a struct field type in any case.
2168+
"c_longdouble" => true,
2169+
21522170
_ => false,
21532171
}
21542172
});
@@ -2176,6 +2194,9 @@ fn test_freebsd(target: &str) {
21762194
// `ptrace_coredump` introduced in FreeBSD 14.
21772195
"ptrace_coredump" if Some(14) > freebsd_ver => true,
21782196

2197+
// A wrapper around "long double".
2198+
"LongDoubleWrap" => true,
2199+
21792200
_ => false,
21802201
}
21812202
});
@@ -2206,6 +2227,10 @@ fn test_freebsd(target: &str) {
22062227
// https://github.com/gnzlbg/ctest/issues/68
22072228
"lio_listio" => true,
22082229

2230+
// It returns a `long double`, but it's a nightmare to bind correctly in rust
2231+
// for the moment, so it's a best effort thing...
2232+
"devstat_compute_etime" => true,
2233+
22092234
_ => false,
22102235
}
22112236
});
@@ -2261,6 +2286,9 @@ fn test_freebsd(target: &str) {
22612286
("if_data", "__ifi_lastchange") => true,
22622287
("ifreq", "ifr_ifru") => true,
22632288

2289+
// anonymous struct
2290+
("devstat", "dev_links") => true,
2291+
22642292
// FIXME: structs too complicated to bind for now...
22652293
("kinfo_proc", "ki_paddr") => true,
22662294
("kinfo_proc", "ki_addr") => true,
@@ -2278,6 +2306,11 @@ fn test_freebsd(target: &str) {
22782306

22792307
// `__sem_base` is a private struct field
22802308
("semid_ds", "__sem_base") => true,
2309+
2310+
// `snap_time` is a `long double`, but it's a nightmare to bind correctly in rust
2311+
// for the moment, so it's a best effort thing...
2312+
("statinfo", "snap_time") => true,
2313+
22812314
_ => false,
22822315
}
22832316
});

0 commit comments

Comments
 (0)