summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2021-09-26 03:33:17 +0000
committerbors <bors@rust-lang.org>2021-09-26 03:33:17 +0000
commitffcf50aacc48ee1d6324fbf69d725af5ec9bffe7 (patch)
treee90ed18930643a3c07865bb4f55f29c4f1f892b4
parent310b698f33e3026b60e855fc2172689583d376d6 (diff)
parent4caf3ceae9e26c0fbe019cd4744920bb3d32bfd9 (diff)
downloadrust-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.txt6
-rw-r--r--src/unix/bsd/freebsdlike/freebsd/mod.rs24
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;