Commit Graph

718 Commits

Author SHA1 Message Date
Tate, Hongliang Tian
c096e7d0b9 Inform Intel SGX SDK about Occlum-defined stacks
There are two types of stacks: the kernel ones and the user ones. The kernel
stacks are used by Occlum and managed by Intel SGX SDK itself, while the user
stacks are used by the threads created and managed by Occlum. These user stacks
are transparent to Intel SGX SDK so far.

The problem is that Intel SGX SDK needs to be aware of the user stacks.
SGX exception handlers will check whether the rsp value---when the exception
happened---is within the stack of the current SGX thread. If the check fails,
the registered exception handler will not be triggered. But when exceptions are
triggered by the threads running upon Occlum, the rsp value points to the user
stacks, which Intel SGX SDK are completely unware of. So the check always
fails.

Therefore, we extend Intel SGX SDK with two new APIs:

  int sgx_enable_user_stack(size_t stack_base, size_t stack_limit);
  void sgx_disable_user_stack(void);

And this commit uses the two APIs to inform Intel SGX SDK about the
Occlum-managed stacks. And the rsp checks in SGX exception handlers will
check whether rsp is within the user stacks.
2019-07-18 07:16:17 +00:00
散樗
2553298b1d Handle cpuid and rdtsc instruction
Init support for cpuid and rdtsc instruction handling in occlum.

This patch includes:
1. cpuid exception handler for all information leaves;
2. rdtsc exception handler;
3. handler registration;
4. cpuid test;
5. rdtsc test.

Signed-off-by: 散樗 <kailun.qkl@antfin.com>
2019-07-18 13:51:50 +08:00
Tate, Hongliang Tian
56c69b5f3c Refactor mmap implementation
1. Add a full test suite for mmap
2. Implement file-backed memory mapping
3. Implement fixed, anonymous memory mapping
4. Implement hinted, anonymous memory mapping
5. Implement munmap that covers partial/multiple memory mappings
2019-07-01 11:56:04 +08:00
Youren
3a38f68c69 Add c++ examples 2019-06-01 11:22:04 +08:00
Tate Tian
06924c0e47
Add C++ support in the Occlum Docker image 2019-06-01 11:18:52 +08:00
Tate Tian
5aaf6de989
Update README 2019-05-27 22:11:14 +08:00
WangRunji
2fdc7d3b17 sefs: fix Rust SGX SDK version and Rust nightly version 2019-05-27 22:07:15 +08:00
Tate Tian
b189e996ab
Fix typos in README 2019-05-27 21:15:11 +08:00
Tate, Hongliang Tian
94acbb1c57 Add Dockerfile 2019-05-27 19:28:38 +08:00
Tate, Hongliang Tian
3465477cc1 Fix two bugs that prevents compilation and tests working 2019-04-29 00:01:17 +08:00
Tate Tian
4b804703b9
Merge pull request #70 for networking system calls 2019-04-28 23:40:48 +08:00
WangRunji
413586f729 add integrity_only_opt and sgx_file_cache feature 2019-04-26 22:48:00 +08:00
WangRunji
6e871f7948 reformat code using cargo fmt 2019-04-26 21:26:30 +08:00
WangRunji
dd3de96b8e hack unix socket for php 2019-04-24 19:25:09 +08:00
WangRunji
3850c31235 fix unix socket bench 2019-04-24 15:28:05 +08:00
WangRunji
cccc1cfb58 add unix socket bench 2019-04-24 13:41:01 +08:00
WangRunji
9797a64f06 enable unix socket and add test for it 2019-04-24 13:28:35 +08:00
WangRunji
9106bd46f2 fix for php. include incomplete code for UnixSocket 2019-04-23 22:00:38 +08:00
WangRunji
f846ba11f2 fix wait4 not removing child 2019-04-23 14:00:44 +08:00
WangRunji
0437e81f36 fix impl File for Stdin/Stdout 2019-04-23 12:58:28 +08:00
WangRunji
26189dddaa implement fcntl & ioctl for socket. fix lighttpd performance 2019-04-23 01:43:41 +08:00
WangRunji
1326924dbb fix errno = 0 and introduce macro 'try_libc' 2019-04-23 00:49:37 +08:00
WangRunji
141094e95e fix return value from libc::ocall 2019-04-22 21:55:57 +08:00
WangRunji
76f9ff380b add timing for syscall 2019-04-22 17:42:20 +08:00
WangRunji
9c9d1eed3a implement /dev/null 2019-04-22 16:32:40 +08:00
WangRunji
54243c543a use errno! macro for all error 2019-04-22 15:54:39 +08:00
WangRunji
b99344d7f5 implement sys_sendfile 2019-04-22 15:37:19 +08:00
WangRunji
f4dacdc01d add cache for SgxFile 2019-04-21 18:04:48 +08:00
WangRunji
ad98a1698e add timing
by shenyouren
2019-04-21 17:28:06 +08:00
WangRunji
5d9b8e4fa3 implement missing IO function for SocketFile 2019-04-21 17:26:17 +08:00
WangRunji
58ff7b88b5 fix SgxFile seek after the end 2019-04-14 20:31:19 +08:00
WangRunji
4811044c14 fix SgxFile read/write empty buffer 2019-04-13 21:03:10 +08:00
WangRunji
d19676032d implement add_open in posix_spawn 2019-04-13 12:05:50 +08:00
WangRunji
58a7f7c126 simplify epoll_ctl 2019-04-12 18:02:40 +08:00
WangRunji
82f4169618 enlarge preallocated space. sync file system on exit. 2019-04-12 16:54:49 +08:00
WangRunji
b2d75f386c support readlink "/proc/self/exe". impl dummy fcntl.getfl 2019-04-12 15:17:27 +08:00
WangRunji
a8060f0b24 add simple epoll test. fix epoll_wait, accept4 2019-04-12 15:14:11 +08:00
WangRunji
80a73eaa0d fix close_on_spawn and file_actions 2019-04-12 14:27:48 +08:00
WangRunji
6d432b0a03 fix deadlock when log getting pid 2019-04-12 13:42:19 +08:00
WangRunji
3defc8b9aa update sefs 2019-04-11 22:24:55 +08:00
WangRunji
b5697ab611 Merge remote-tracking branch 'official/master' into net
# Conflicts:
#	src/libos/src/fs/mod.rs
#	src/libos/src/syscall/mod.rs
#	test/Makefile
2019-04-11 19:13:29 +08:00
WangRunji
bd9a3dd578 fix epoll_ctl deadlock 2019-04-11 19:10:12 +08:00
Tate, Hongliang Tian
2957fa99d5 Make sure VMRange fills its memory with zeros if necessary 2019-04-11 18:19:49 +08:00
Tate, Hongliang Tian
862601604c Refactor VMRange code and fix two bugs
The first bug is that a VMRange may not be allocated to a 4KB-aligned address.
The second bug is that a VMRange may not be deallocated by its parent VMRange.
2019-04-11 18:19:49 +08:00
Tate, Hongliang Tian
895f70a2dc Refactor VMRange allocation for readability 2019-04-11 09:13:53 +08:00
Tate, Hongliang Tian
356884679b Add readlink 2019-04-11 09:13:53 +08:00
Tate, Hongliang Tian
44ef19726f Add fcntl 2019-04-11 09:13:53 +08:00
WangRunji
f9121a025e implement epoll 2019-04-10 14:07:50 +08:00
Tate, Hongliang Tian
785d3237b9 Add getuid, getgid, geteuid, getegid, etc. 2019-04-10 09:03:41 +08:00
Tate, Hongliang Tian
e335e8df1d Add sigaction and sigprocmask (but not implemented) 2019-04-10 09:03:41 +08:00