From 7ab71a0ad591cd72d7bee512b58a53e08e510ade Mon Sep 17 00:00:00 2001 From: Wildan M Date: Thu, 28 Aug 2025 08:36:16 +0700 Subject: [PATCH] Add sem_timedwait --- src/header/semaphore/cbindgen.toml | 2 +- src/header/semaphore/mod.rs | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/header/semaphore/cbindgen.toml b/src/header/semaphore/cbindgen.toml index 213064b7ac..1eb7ba4cbf 100644 --- a/src/header/semaphore/cbindgen.toml +++ b/src/header/semaphore/cbindgen.toml @@ -1,4 +1,4 @@ -sys_includes = [] +sys_includes = ["time.h"] include_guard = "_RELIBC_SEMAPHORE_H" language = "C" style = "Type" diff --git a/src/header/semaphore/mod.rs b/src/header/semaphore/mod.rs index 34e4d1fcfb..b5137d54a7 100644 --- a/src/header/semaphore/mod.rs +++ b/src/header/semaphore/mod.rs @@ -2,7 +2,7 @@ //! //! See . -use crate::platform::types::*; +use crate::{header::time::timespec, platform::types::*}; /// See . // TODO: Statically verify size and align @@ -83,6 +83,14 @@ pub unsafe extern "C" fn sem_wait(sem: *mut sem_t) -> c_int { 0 } +/// See . +#[no_mangle] +pub unsafe extern "C" fn sem_timedwait(sem: *mut sem_t, abstime: *const timespec) -> c_int { + get(sem).wait(Some(&*abstime)); + + 0 +} + unsafe fn get<'any>(sem: *mut sem_t) -> &'any RlctSempahore { &*sem.cast() }