diff --git a/include/sys/redox.h b/include/sys/redox.h new file mode 100644 index 0000000000000000000000000000000000000000..4fb4bebdc0a57004750e9d7472953c7d3dde5844 --- /dev/null +++ b/include/sys/redox.h @@ -0,0 +1,20 @@ +#ifndef _SYS_REDOX_H +#define _SYS_REDOX_H + +#include <sys/types.h> + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __redox__ + +ssize_t redox_fpath(int fd, void * buf, size_t count); + +#endif + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/src/platform/redox/extra.rs b/src/platform/redox/extra.rs new file mode 100644 index 0000000000000000000000000000000000000000..11fddfdb61b0976d8719fe2e9935e5261924dd9f --- /dev/null +++ b/src/platform/redox/extra.rs @@ -0,0 +1,10 @@ +use core::slice; + +use platform::types::*; + +use super::e; + +#[no_mangle] +pub unsafe extern "C" fn redox_fpath(fd: c_int, buf: *mut c_void, count: size_t) -> ssize_t { + e(syscall::fpath(fd as usize, slice::from_raw_parts_mut(buf as *mut u8, count))) as ssize_t +} diff --git a/src/platform/redox/mod.rs b/src/platform/redox/mod.rs index 4443aef4f9c5fa17505ddfeb9eef9bc04329d4e6..8fc56b0037a360c317832d0c0281262fd82b40fc 100644 --- a/src/platform/redox/mod.rs +++ b/src/platform/redox/mod.rs @@ -28,6 +28,7 @@ use io::{self, BufReader, SeekFrom}; use super::types::*; use super::{errno, Pal, Read}; +mod extra; mod pte; mod signal; mod socket;