about summary refs log tree commit diff
path: root/src/libstd/sys
diff options
context:
space:
mode:
authorJethro Beekman <jethro@fortanix.com>2018-12-19 12:16:04 +0530
committerJethro Beekman <jethro@fortanix.com>2018-12-19 12:16:04 +0530
commit38f5c97c3383fb8424fbde6ccdc1aaad4c28ae0f (patch)
treef81c071d5d61d22baf89400ac4f785a4daa3428b /src/libstd/sys
parent4358be46c7f04a6cc12ae913c46a635bb1559779 (diff)
downloadrust-38f5c97c3383fb8424fbde6ccdc1aaad4c28ae0f.tar.gz
rust-38f5c97c3383fb8424fbde6ccdc1aaad4c28ae0f.zip
Revert "Remove some dead code from `sgx`"
This reverts commit 134661917bf4b086b027a2c58219d50ba57a1453.
Diffstat (limited to 'src/libstd/sys')
-rw-r--r--src/libstd/sys/sgx/abi/mem.rs7
-rw-r--r--src/libstd/sys/sgx/abi/usercalls/mod.rs8
2 files changed, 15 insertions, 0 deletions
diff --git a/src/libstd/sys/sgx/abi/mem.rs b/src/libstd/sys/sgx/abi/mem.rs
index bf32c712216..508f2ff4d4f 100644
--- a/src/libstd/sys/sgx/abi/mem.rs
+++ b/src/libstd/sys/sgx/abi/mem.rs
@@ -34,6 +34,13 @@ fn image_base() -> u64 {
     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);
diff --git a/src/libstd/sys/sgx/abi/usercalls/mod.rs b/src/libstd/sys/sgx/abi/usercalls/mod.rs
index d1d180e4825..2bc32c9fefb 100644
--- a/src/libstd/sys/sgx/abi/usercalls/mod.rs
+++ b/src/libstd/sys/sgx/abi/usercalls/mod.rs
@@ -33,6 +33,14 @@ pub fn read(fd: Fd, buf: &mut [u8]) -> IoResult<usize> {
     }
 }
 
+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);