diff --git a/src/platform/redox/libredox.rs b/src/platform/redox/libredox.rs index 2954e745be3ed85f18ae64f90e32bd959fad5ec9..15ea59a7ed305b45c4c1693605417aa76dc08bc9 100644 --- a/src/platform/redox/libredox.rs +++ b/src/platform/redox/libredox.rs @@ -3,7 +3,9 @@ use core::{slice, str}; use syscall::{Error, Result, WaitFlags, EMFILE}; use crate::{ - header::{errno::EINVAL, signal::sigaction, sys_stat::UTIME_NOW, time::timespec}, + header::{ + errno::EINVAL, signal::sigaction, sys_stat::UTIME_NOW, sys_uio::iovec, time::timespec, + }, platform::types::*, }; @@ -319,3 +321,18 @@ pub unsafe extern "C" fn redox_strerror_v1( Ok(len) })()) } + +#[no_mangle] +pub unsafe extern "C" fn redox_mkns_v1( + names: *const iovec, + num_names: usize, + flags: u32, +) -> RawResult { + Error::mux((|| { + if flags != 0 { + return Err(Error::new(EINVAL)); + } + // Kernel does the UTF-8 validation. + syscall::mkns(core::slice::from_raw_parts(names.cast(), num_names)) + })()) +}