Tate, Hongliang Tian
76f91a1aa3
Add Occlum.json. No more configs hardcoded in code
...
1. Add Occlum.json as Occlum's config file
2. Add tools/bin/build_enclave
3. Add tools/bin/protect_integrity
4. Validate Occlum.json.protected on LibOS startup
5. Parse Occlum.json.protected on LibOS startup
6. Config enclave size using Occlum.json
7. Config process memory sizes using Occlum.json
2019-08-09 09:19:51 +00:00
LI Qing
cff0de1c39
Add sched_xetaffinity() system calls in Occlum
...
1. LibOS support sched_getaffinity() and sched_setaffinity() system calls
2. Add sched_cpu_affinity test cases in occlum/test/sched
2019-08-05 15:22:20 +08:00
Wang Runji
c68c3c9a94
Fix the write-without-updating-size bug of SEFS
2019-08-02 05:31:42 +00:00
Tate, Hongliang Tian
a2169e63e8
Upgrade Dockerfile for dynamic-linking support
2019-08-01 12:23:37 +00:00
Tate, Hongliang Tian
e11c30c5c5
Run dynamically-linked hello world
2019-07-20 03:34:00 +00:00
Tate, Hongliang Tian
33739cc00b
Program loader loads ld.so now
2019-07-20 03:34:00 +00:00
Tate, Hongliang Tian
13974315ad
Fix all compiler warnings for tests
2019-07-20 03:34:00 +00:00
Tate, Hongliang Tian
a579f84e90
Enable new system call mechanism via Auxiliary Vector
...
The old system call mechanism works by relocating the symbol __occlum_syscall
provided by libocclum_stub.so to the real entry point of the LibOS. This symbol
relocation is done by the program loader. Now, the new system call mechanism is
based on passing the entry point via the auxiliary vector. This new mechanism
is simpler and is more compatible with the upcoming support for ld.so.
Changes:
1. Fix a bug in serializing auxiliary vector in the stack of a user program;
2. Passing syscall entry via auxiliary vector;
3. Remove relocating for the __occlum_syscall symbol;
4. Remove the dependency on libocclum_stub.so in tests.
2019-07-20 03:34:00 +00:00
Tate, Hongliang Tian
8686322afb
Add /dev/zero, /dev/random, /dev/urandom, and /dev/arandom
2019-07-19 12:30:15 +00:00
Tate, Hongliang Tian
8cda63ab3a
Use SEFS at /, HostFS at /host, and RamFS at /tmp
2019-07-19 10:25:33 +00:00
Wang Runji
7f229cef50
add simple HostFS, mount it at /host
2019-07-19 03:51:38 +00:00
Wang Runji
29278db8f4
support multiple fs
...
- use RamFS as rootfs, mount SEFS at /test
- for testing convenience, set default cwd to /test
- fix spawn path and change_cwd
2019-07-19 03:49:18 +00:00
Tate, Hongliang Tian
e1e46c9935
Add clock_gettimeofday
2019-07-18 10:51:12 +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
散樗
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
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
a8060f0b24
add simple epoll test. fix epoll_wait, accept4
2019-04-12 15:14:11 +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
Tate, Hongliang Tian
d7e266d0e3
Add access and faccessat
2019-04-10 09:03:41 +08:00
Tate, Hongliang Tian
b003f4ce43
Add prlimit64, getrlimit, and setrlimit
2019-04-10 09:03:41 +08:00
Tate, Hongliang Tian
8846c62b5e
Add uname
2019-04-10 09:03:41 +08:00
WangRunji
5b90d90643
implement SocketFile. pass socket test
2019-04-07 11:47:54 +08:00
WangRunji
0dda84d7f2
add test for simple socket syscalls
2019-04-07 11:28:43 +08:00
Tate, Hongliang Tian
abe553ba1c
Adapt Makefile to changes of Occlum's clang and ld wrappers
2019-04-06 22:55:16 +08:00
Tate, Hongliang Tian
bd82b27762
Use mutex in Pthread test
2019-04-06 22:55:16 +08:00
Tate, Hongliang Tian
660d0931cd
Add Pthread test
2019-04-06 22:55:16 +08:00
Tate, Hongliang Tian
db40e8f52b
Enable Thread Local Storage (TLS)
...
Add arch_prctl and pass necessary ELF info to libc via aux vector
2019-04-06 22:55:16 +08:00
Tate, Hongliang Tian
b2e626760b
Add futex
2019-04-03 13:41:55 +08:00
Tate, Hongliang Tian
4cf8777592
Add clone system call
2019-04-03 13:41:55 +08:00
WangRunji
a3483851a0
add test for link, unlink, rename
2019-03-29 14:20:25 +08:00
WangRunji
0a8e84f4de
add test for pread, pwrite
2019-03-29 14:20:25 +08:00
WangRunji
d5e8d43e7b
fix and add test for readv, writev, lseek
2019-03-29 14:20:25 +08:00
WangRunji
4a9b7aa1b0
add test for truncate, stat
2019-03-29 14:20:25 +08:00
WangRunji
e095e8a4f0
fix split_path. add test for getcwd, mkdir, rmdir, chdir.
2019-03-29 14:20:25 +08:00
WangRunji
6e9f00b5db
fix process cwd. fix open path
2019-03-29 14:20:25 +08:00
WangRunji
011b4bf8e7
add test for readdir
2019-03-29 14:20:25 +08:00
WangRunji
cbeab07352
add test for ftruncate
2019-03-29 14:20:25 +08:00
WangRunji
0ec4ba9305
load program bin from SEFS
2019-03-29 14:20:25 +08:00
WangRunji
8f078e9499
fix bin path in tests
2019-03-29 14:20:25 +08:00
WangRunji
e41f65e132
fix test Makefile for SEFS
2019-03-29 14:20:25 +08:00
Tate, Hongliang Tian
cd6dc9d77a
Use the new arguments for Occlum LLVM toolchain
2019-02-23 16:31:01 +08:00
Tate, Hongliang Tian
22edefc349
Add pipe throughput benchmark
2019-02-16 16:24:08 +08:00
Tate, Hongliang Tian
d1731162eb
Add perf test for spawn+wait4
2019-02-16 16:24:08 +08:00
Tate, Hongliang Tian
71d119181e
Support argc and argv for child process after spawn
2019-02-16 16:24:08 +08:00
Tate, Hongliang Tian
ad704c421f
Add argc and argv support
2019-02-16 16:24:08 +08:00
Tate, Hongliang Tian
ae063cbf90
Portable colorful output regardless of shell
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
cdf3a2c3e0
Small fix to malloc test
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
a2b62891cc
Add file I/O test
2019-02-16 16:24:08 +08:00
Tate, Hongliang Tian
2b4c8255c6
Improve the build system
2019-02-16 16:24:08 +08:00
Tate, Hongliang Tian
98b4508a0d
Use posix_spawn and wait4 in libc
2019-02-16 16:23:30 +08:00
Tate, Hongliang Tian
5b7048976e
Add spawn and wait4 test
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
9389b702ba
Use Occlum toolchain to compile test programs
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
4107a65248
Enable libc's printf
2019-02-16 16:23:30 +08:00
Tate, Hongliang Tian
4c3f556c7d
Do relocation for .rela.dyn section
2019-02-16 16:23:30 +08:00
Tate, Hongliang Tian
f0e7bae0d7
Works with a minimal version of Occlum's libc
2019-02-16 16:23:30 +08:00
Tate, Hongliang Tian
a4f37f8917
Use new name Occlum in code
2019-02-16 16:23:30 +08:00
Tate, Hongliang Tian
a66c55f95f
Add open, read, write and close
2019-02-16 16:23:30 +08:00
Tate, Hongliang Tian
757d3f2f4d
Use my forked xmas-elf as a submodule
2019-02-16 16:23:30 +08:00
Tate, Hongliang Tian
68d459975d
Minimize the # of memory pages whose permissions are modified
2019-02-16 16:23:30 +08:00
Tate, Hongliang Tian
b041dee55c
Release resources when processes destroyed
2019-02-16 16:23:30 +08:00
Tate, Hongliang Tian
4fbfe7bf0c
Add syscall getpid and wait4 (this latter one is fake)
2019-02-16 16:23:30 +08:00
Tate, Hongliang Tian
637e15f6c6
Add syscall spawn
2019-02-16 16:23:30 +08:00
Tate, Hongliang Tian
7671dbf470
Load and run a Hello World program
2019-02-16 16:23:30 +08:00
Tate, Hongliang Tian
264ac7f993
Add write syscall and prints Hello World
2018-07-01 15:57:41 +08:00