From 59e028d96dcb93fae9b9d650ce86260e6c3d5f9e Mon Sep 17 00:00:00 2001 From: auronandace Date: Sat, 13 Dec 2025 20:56:02 +0000 Subject: [PATCH] Update and add spec links --- src/header/pthread/mod.rs | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/header/pthread/mod.rs b/src/header/pthread/mod.rs index 25252f307a..75b1274ed9 100644 --- a/src/header/pthread/mod.rs +++ b/src/header/pthread/mod.rs @@ -1,4 +1,6 @@ -//! pthread.h implementation for Redox, following https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/pthread.h.html +//! `pthread.h` implementation. +//! +//! See . use alloc::collections::LinkedList; use core::{cell::Cell, ptr::NonNull}; @@ -79,6 +81,7 @@ pub use self::cond::*; #[thread_local] pub static mut fork_hooks: [LinkedList; 3] = [const { LinkedList::new() }; 3]; +/// See . #[unsafe(no_mangle)] pub unsafe extern "C" fn pthread_cancel(thread: pthread_t) -> c_int { match pthread::cancel(&*thread.cast()) { @@ -87,6 +90,7 @@ pub unsafe extern "C" fn pthread_cancel(thread: pthread_t) -> c_int { } } +/// See . #[unsafe(no_mangle)] pub unsafe extern "C" fn pthread_create( pthread: *mut pthread_t, @@ -105,6 +109,7 @@ pub unsafe extern "C" fn pthread_create( } } +/// See . #[unsafe(no_mangle)] pub unsafe extern "C" fn pthread_detach(pthread: pthread_t) -> c_int { match pthread::detach(&*pthread.cast()) { @@ -113,6 +118,7 @@ pub unsafe extern "C" fn pthread_detach(pthread: pthread_t) -> c_int { } } +/// See . #[unsafe(no_mangle)] pub extern "C" fn pthread_equal(pthread1: pthread_t, pthread2: pthread_t) -> c_int { core::ptr::eq(pthread1, pthread2).into() @@ -143,17 +149,21 @@ pub extern "C" fn pthread_atfork( 0 } +/// See . #[unsafe(no_mangle)] pub unsafe extern "C" fn pthread_exit(retval: *mut c_void) -> ! { pthread::exit_current_thread(pthread::Retval(retval)) } +// Not in latest POSIX, mark as depreciated? +/// See . #[unsafe(no_mangle)] pub unsafe extern "C" fn pthread_getconcurrency() -> c_int { // Redox and Linux threads are 1:1, not M:N. 1 } +/// See . #[unsafe(no_mangle)] pub unsafe extern "C" fn pthread_getcpuclockid( thread: pthread_t, @@ -168,6 +178,7 @@ pub unsafe extern "C" fn pthread_getcpuclockid( } } +/// See . #[unsafe(no_mangle)] pub unsafe extern "C" fn pthread_getschedparam( thread: pthread_t, @@ -188,6 +199,7 @@ pub unsafe extern "C" fn pthread_getschedparam( pub mod tls; pub use tls::*; +/// See . #[unsafe(no_mangle)] pub unsafe extern "C" fn pthread_join(thread: pthread_t, retval: *mut *mut c_void) -> c_int { match pthread::join(&*thread.cast()) { @@ -210,10 +222,13 @@ pub use self::once::*; pub mod rwlock; pub use self::rwlock::*; +/// See . #[unsafe(no_mangle)] pub unsafe extern "C" fn pthread_self() -> pthread_t { pthread::current_thread().unwrap_unchecked() as *const _ as *mut _ } + +/// See . #[unsafe(no_mangle)] pub unsafe extern "C" fn pthread_setcancelstate(state: c_int, oldstate: *mut c_int) -> c_int { match pthread::set_cancel_state(state) { @@ -228,6 +243,8 @@ pub unsafe extern "C" fn pthread_setcancelstate(state: c_int, oldstate: *mut c_i Err(Errno(error)) => error, } } + +/// See . #[unsafe(no_mangle)] pub unsafe extern "C" fn pthread_setcanceltype(ty: c_int, oldty: *mut c_int) -> c_int { match pthread::set_cancel_type(ty) { @@ -243,12 +260,15 @@ pub unsafe extern "C" fn pthread_setcanceltype(ty: c_int, oldty: *mut c_int) -> } } +// Not in latest POSIX, mark as depreciated? +/// See . #[unsafe(no_mangle)] pub extern "C" fn pthread_setconcurrency(concurrency: c_int) -> c_int { // Redox and Linux threads are 1:1, not M:N. 0 } +/// See . #[unsafe(no_mangle)] pub unsafe extern "C" fn pthread_setschedparam( thread: pthread_t, @@ -257,6 +277,8 @@ pub unsafe extern "C" fn pthread_setschedparam( ) -> c_int { e(pthread::set_sched_param(&*thread.cast(), policy, &*param)) } + +/// See . #[unsafe(no_mangle)] pub unsafe extern "C" fn pthread_setschedprio(thread: pthread_t, prio: c_int) -> c_int { e(pthread::set_sched_priority(&*thread.cast(), prio)) @@ -265,6 +287,7 @@ pub unsafe extern "C" fn pthread_setschedprio(thread: pthread_t, prio: c_int) -> pub mod spin; pub use self::spin::*; +/// See . #[unsafe(no_mangle)] pub unsafe extern "C" fn pthread_testcancel() { pthread::testcancel();