use core::ffi::c_long; use core::mem::size_of; use crate::sched::current::current_task; use libkernel::{ error::{KernelError, Result}, memory::address::TUA, }; pub mod futex; pub fn sys_set_tid_address(tidptr: TUA) -> Result { let mut task = current_task(); task.child_tid_ptr = Some(tidptr); Ok(task.tid.value() as _) } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct RobustList { next: TUA, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct RobustListHead { list: RobustList, futex_offset: c_long, list_op_pending: RobustList, } pub async fn sys_set_robust_list(head: TUA, len: usize) -> Result { if core::hint::unlikely(len != size_of::()) { return Err(KernelError::InvalidValue); } let mut task = current_task(); task.robust_list.replace(head); Ok(0) }