diff --git a/libc-test/semver/linux.txt b/libc-test/semver/linux.txt index 82d9e47299611..38c79481be5fe 100644 --- a/libc-test/semver/linux.txt +++ b/libc-test/semver/linux.txt @@ -3043,6 +3043,11 @@ telldir timerfd_create timerfd_gettime timerfd_settime +timer_create +timer_delete +timer_getoverrun +timer_gettime +timer_settime tmpfile64 truncate truncate64 diff --git a/src/unix/linux_like/linux/mod.rs b/src/unix/linux_like/linux/mod.rs index 3a55809264824..0a7a674957c5c 100644 --- a/src/unix/linux_like/linux/mod.rs +++ b/src/unix/linux_like/linux/mod.rs @@ -3361,7 +3361,7 @@ extern "C" { pub fn lremovexattr(path: *const c_char, name: *const c_char) -> ::c_int; pub fn fremovexattr(filedes: ::c_int, name: *const c_char) -> ::c_int; pub fn signalfd(fd: ::c_int, mask: *const ::sigset_t, flags: ::c_int) -> ::c_int; - pub fn timerfd_create(clockid: ::c_int, flags: ::c_int) -> ::c_int; + pub fn timerfd_create(clockid: ::clockid_t, flags: ::c_int) -> ::c_int; pub fn timerfd_gettime(fd: ::c_int, curr_value: *mut itimerspec) -> ::c_int; pub fn timerfd_settime( fd: ::c_int, @@ -3824,6 +3824,24 @@ extern "C" { pub fn gettid() -> ::pid_t; } +#[link(name = "rt")] +extern "C" { + pub fn timer_create( + clockid: ::clockid_t, + sevp: *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, curr_value: *mut ::itimerspec) -> ::c_int; + pub fn timer_settime( + timerid: ::timer_t, + flags: ::c_int, + new_value: *const ::itimerspec, + old_value: *mut ::itimerspec, + ) -> ::c_int; +} + cfg_if! { if #[cfg(target_env = "uclibc")] { mod uclibc; diff --git a/src/unix/linux_like/mod.rs b/src/unix/linux_like/mod.rs index 96545037537a2..48798849d04f4 100644 --- a/src/unix/linux_like/mod.rs +++ b/src/unix/linux_like/mod.rs @@ -2,6 +2,7 @@ pub type sa_family_t = u16; pub type speed_t = ::c_uint; pub type tcflag_t = ::c_uint; pub type clockid_t = ::c_int; +pub type timer_t = *mut ::c_void; pub type key_t = ::c_int; pub type id_t = ::c_uint;