base
}
+pub fn is_enclave_range(p: *const u8, len: usize) -> bool {
+ let start=p as u64;
+ let end=start + (len as u64);
+ start >= image_base() &&
+ end <= image_base() + (unsafe { ENCLAVE_SIZE } as u64) // unsafe ok: link-time constant
+}
+
pub fn is_user_range(p: *const u8, len: usize) -> bool {
let start=p as u64;
let end=start + (len as u64);
}
}
+pub fn read_alloc(fd: Fd) -> IoResult<Vec<u8>> {
+ unsafe {
+ let mut userbuf = alloc::User::<ByteBuffer>::uninitialized();
+ raw::read_alloc(fd, userbuf.as_raw_mut_ptr()).from_sgx_result()?;
+ Ok(copy_user_buffer(&userbuf))
+ }
+}
+
pub fn write(fd: Fd, buf: &[u8]) -> IoResult<usize> {
unsafe {
let userbuf = alloc::User::new_from_enclave(buf);