Commit Graph

15 Commits

Author SHA1 Message Date
sanqian.hcy
b08f5b9ceb Add support for SGX simulation mode
1. Use arch_prctl to replace RDFSBASE/WRFSBASE
Ptrace can't get right value if WRFSBASE is called which
will make debugger fail in simulation mode. Use arch_prctl
to replace these instructions in simulation mode.

2. Disable the busy thread in exit_group test
exit_group doesn't have a real implementation yet but test
under SGX simulation mode give core dump for exit_group test.
Disable the busy loop thread and the core dump disappear.

3. Add SDK lib path to LD_LIBRARY_PATH
Linker sometims can't find urts_sim and uae_service_sim when
running. Explicitly add path to LD_LIBRARY_PATH when running
occlum command.

Signed-off-by: sanqian.hcy <sanqian.hcy@antfin.com>
2020-03-01 06:42:33 +00:00
Tate, Hongliang Tian
c3d042dcd0 Refactor EDL for adding custom C types easily
Before this commit, using custom C types in ECalls/OCalls defined in Occlum's
EDL is cumbersme. Now this issue is resolved by providing `occlum_edl_types.h`
header file. There are two versions of this file: one is under
`src/libos/include/edl/` for LibOS, the other is under
`src/pal/include/edl/` for PAL. So now to define a new custom C type, just
edit the two versions of `occlum_edl_types.h` to define the type.
2020-01-23 06:58:46 +00:00
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
WangRunji
3b38c3b75a refactor syscall: move dispatch_syscall to Rust 2019-03-29 14:20:25 +08:00
WangRunji
0cf714f54e add sys_getcwd 2019-03-29 14:20:25 +08:00
Tate, Hongliang Tian
78e94fe29b Add sync syscall 2019-02-16 16:24:08 +08:00
Tate, Hongliang Tian
d3009db10b Add gettimeofday 2019-02-16 16:24:08 +08:00
Tate, Hongliang Tian
a712bfe70a Add pipe test 2019-02-16 16:24:08 +08:00
Tate, Hongliang Tian
77a18bbc4d Add dup, dup2, and dup3 2019-02-16 16:23:30 +08:00
Tate, Hongliang Tian
d40af94aaf Support O_CLOEXEC on open() or pipe2() 2019-02-16 16:23:30 +08:00
Tate, Hongliang Tian
c00fddd2bf Add pipe syscall 2019-02-16 16:23:30 +08:00
Tate, Hongliang Tian
372649f3d6 Add getpid and getppid 2019-02-16 16:23:30 +08:00
Tate, Hongliang Tian
b717842113 Switch user/kernel fsbase 2019-02-16 16:23:30 +08:00
Tate, Hongliang Tian
ea00690e68 Add mmap, munmap, mremap and brk syscalls 2019-02-16 16:23:30 +08:00
Tate, Hongliang Tian
852903de20 Add virtual memory subsystem 2019-02-16 16:23:30 +08:00