diff options
author | bors <bors@rust-lang.org> | 2021-09-26 03:33:17 +0000 |
---|---|---|
committer | bors <bors@rust-lang.org> | 2021-09-26 03:33:17 +0000 |
commit | ffcf50aacc48ee1d6324fbf69d725af5ec9bffe7 (patch) | |
tree | e90ed18930643a3c07865bb4f55f29c4f1f892b4 | |
parent | 310b698f33e3026b60e855fc2172689583d376d6 (diff) | |
parent | 4caf3ceae9e26c0fbe019cd4744920bb3d32bfd9 (diff) | |
download | rust-libc-ffcf50aacc48ee1d6324fbf69d725af5ec9bffe7.tar.gz |
Auto merge of #2416 - devnexen:fbsd_timer_api, r=JohnTitor
freebsd add timer api.
-rw-r--r-- | libc-test/semver/freebsd.txt | 6 | ||||
-rw-r--r-- | src/unix/bsd/freebsdlike/freebsd/mod.rs | 24 |
2 files changed, 30 insertions, 0 deletions
diff --git a/libc-test/semver/freebsd.txt b/libc-test/semver/freebsd.txt index c67b36f10e..2f20287d8d 100644 --- a/libc-test/semver/freebsd.txt +++ b/libc-test/semver/freebsd.txt @@ -1750,6 +1750,12 @@ sysctl sysctlbyname sysctlnametomib telldir +timer_create +timer_delete +timer_getoverrun +timer_gettime +timer_settime +timer_t timex truncate ttyname_r diff --git a/src/unix/bsd/freebsdlike/freebsd/mod.rs b/src/unix/bsd/freebsdlike/freebsd/mod.rs index 145676a217..fa131877a2 100644 --- a/src/unix/bsd/freebsdlike/freebsd/mod.rs +++ b/src/unix/bsd/freebsdlike/freebsd/mod.rs @@ -5,6 +5,7 @@ pub type lwpid_t = i32; pub type blksize_t = i32; pub type clockid_t = ::c_int; pub type sem_t = _sem; +pub type timer_t = *mut __c_anonymous__timer; pub type fsblkcnt_t = u64; pub type fsfilcnt_t = u64; @@ -249,6 +250,15 @@ s! { envv: *mut ::c_void, core: ::uintptr_t, } + + pub struct itimerspec { + pub it_interval: ::timespec, + pub it_value: ::timespec, + } + + pub struct __c_anonymous__timer { + _priv: [::c_int; 3], + } } s_no_extra_traits! { @@ -1953,6 +1963,20 @@ extern "C" { pub fn procstat_close(procstat: *mut procstat); } +#[link(name = "rt")] +extern "C" { + pub fn timer_create(clock_id: clockid_t, evp: *mut sigevent, timerid: *mut timer_t) -> ::c_int; + pub fn timer_delete(timerid: timer_t) -> ::c_int; + pub fn timer_getoverrun(timerid: timer_t) -> ::c_int; + pub fn timer_gettime(timerid: timer_t, value: *mut itimerspec) -> ::c_int; + pub fn timer_settime( + timerid: timer_t, + flags: ::c_int, + value: *const itimerspec, + ovalue: *mut itimerspec, + ) -> ::c_int; +} + cfg_if! { if #[cfg(freebsd13)] { mod freebsd13; |