Skip to content

Commit

Permalink
Auto merge of #2543 - asomers:fspacectl, r=Amanieu
Browse files Browse the repository at this point in the history
Add fspacectl, new in FreeBSD 14
  • Loading branch information
bors committed Jan 21, 2022
2 parents 72e4151 + be39286 commit 7600416
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 1 deletion.
11 changes: 10 additions & 1 deletion libc-test/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2041,7 +2041,7 @@ fn test_freebsd(target: &str) {
// This was changed to 96(0x60) in FreeBSD 13:
// https://github.com/freebsd/freebsd/
// commit/06b00ceaa914a3907e4e27bad924f44612bae1d7
"MINCORE_SUPER" if Some(13) == freebsd_ver => true,
"MINCORE_SUPER" if Some(13) <= freebsd_ver => true,

// Added in FreeBSD 12.0
"EINTEGRITY" if Some(11) == freebsd_ver => true,
Expand Down Expand Up @@ -2089,6 +2089,9 @@ fn test_freebsd(target: &str) {
// Added in in FreeBSD 13.0 (r367776 and r367287)
"SCM_CREDS2" | "LOCAL_CREDS_PERSISTENT" if Some(13) > freebsd_ver => true,

// Added in FreeBSD 14
"SPACECTL_DEALLOC" if Some(14) > freebsd_ver => true,

"VM_TOTAL" if Some(11) == freebsd_ver => true,

// Added in FreeBSD 13.
Expand Down Expand Up @@ -2196,6 +2199,9 @@ fn test_freebsd(target: &str) {
// `ptrace_sc_ret` is not available in FreeBSD 11
"ptrace_sc_ret" if Some(11) == freebsd_ver => true,

// `spacectl_range` was introduced in FreeBSD 14
"spacectl_range" if Some(14) > freebsd_ver => true,

// obsolete version
"vmtotal" if Some(11) == freebsd_ver => true,

Expand Down Expand Up @@ -2224,6 +2230,9 @@ fn test_freebsd(target: &str) {
// `ssize_t` in FreeBSD11:
"aio_waitcomplete" if Some(10) == freebsd_ver => true,

// `fspacectl` was introduced in FreeBSD 14
"fspacectl" if Some(14) > freebsd_ver => true,

// The `uname` function in the `utsname.h` FreeBSD header is a C
// inline function (has no symbol) that calls the `__xuname` symbol.
// Therefore the function pointer comparison does not make sense for it.
Expand Down
16 changes: 16 additions & 0 deletions src/unix/bsd/freebsdlike/freebsd/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -600,6 +600,11 @@ s! {
pub mode: u16,
}

pub struct spacectl_range {
pub r_offset: ::off_t,
pub r_len: ::off_t
}

pub struct rusage_ext {
pub rux_runtime: u64,
pub rux_uticks: u64,
Expand Down Expand Up @@ -2978,6 +2983,9 @@ pub const F_SEAL_SEAL: ::c_int = 1;
pub const F_SEAL_SHRINK: ::c_int = 2;
pub const F_SEAL_WRITE: ::c_int = 8;

// for use with fspacectl
pub const SPACECTL_DEALLOC: ::c_int = 1;

// For getrandom()
pub const GRND_NONBLOCK: ::c_uint = 0x1;
pub const GRND_RANDOM: ::c_uint = 0x2;
Expand Down Expand Up @@ -3808,6 +3816,14 @@ extern "C" {
nbytes: ::size_t,
) -> ::ssize_t;

pub fn fspacectl(
fd: ::c_int,
cmd: ::c_int,
rqsr: *const spacectl_range,
flags: ::c_int,
rmsr: *mut spacectl_range,
) -> ::c_int;

pub fn jail(jail: *mut ::jail) -> ::c_int;
pub fn jail_attach(jid: ::c_int) -> ::c_int;
pub fn jail_remove(jid: ::c_int) -> ::c_int;
Expand Down

0 comments on commit 7600416

Please sign in to comment.