occlum/test
Tate, Hongliang Tian 6fdfa57a14 Add the new epoll implementation
Before this commit, the epoll implementation works by simply delegating to the
host OS through OCall. One major problem with this implementation is
that it can only handle files that are backed by a file of the host OS
(e.g., sockets), but not those are are mainly implemented by the LibOS
(e.g., pipes). Therefore, a new epoll implementation that can handle all
kinds of files is needed.

This commit completely rewrites the epoll implementation by leveraging
the new event subsystem. Now the new epoll can handle all file types:

1. Host files, e.g., sockets, eventfd;
2. LibOS files, e.g., pipes;
3. Hybrid files, e.g., epoll files.

For a new file type to support epoll, it only neends to implement no
more than four methods of the File trait:

* poll (required for all file types);
* notifier (required for all file files);
* host_fd (only required for host files);
* recv_host_events (only required for host files).
2020-11-10 14:34:40 +08:00
..
access Add "*at()" system calls 2020-09-18 12:39:12 +08:00
chmod Add "*at()" system calls 2020-09-18 12:39:12 +08:00
chown Add "*at()" system calls 2020-09-18 12:39:12 +08:00
client Format c/c++ files in src, tools and test 2020-05-27 07:09:18 +00:00
cout Format c/c++ files in src, tools and test 2020-05-27 07:09:18 +00:00
cpuid Fix cpuid test case to check SGX support accurately 2020-08-11 12:07:23 +08:00
data_sink Format c/c++ files in src, tools and test 2020-05-27 07:09:18 +00:00
device Format c/c++ files in src, tools and test 2020-05-27 07:09:18 +00:00
empty Format c/c++ files in src, tools and test 2020-05-27 07:09:18 +00:00
emulate_syscall Format c/c++ files in src, tools and test 2020-05-27 07:09:18 +00:00
env Format c/c++ files in src, tools and test 2020-05-27 07:09:18 +00:00
eventfd Format c/c++ files in src, tools and test 2020-05-27 07:09:18 +00:00
exit_group Fix SGX simulation mode broken by the interrupt subsystem 2020-07-11 14:19:41 +00:00
fcntl Add "*at()" system calls 2020-09-18 12:39:12 +08:00
file Add "*at()" system calls 2020-09-18 12:39:12 +08:00
fs_perms Add "*at()" system calls 2020-09-18 12:39:12 +08:00
getpid Format c/c++ files in src, tools and test 2020-05-27 07:09:18 +00:00
hello_world Format c/c++ files in src, tools and test 2020-05-27 07:09:18 +00:00
hostfs Add "*at()" system calls 2020-09-18 12:39:12 +08:00
include Add "*at()" system calls 2020-09-18 12:39:12 +08:00
ioctl Add ioctl support for FIONBIO command 2020-10-21 12:51:18 +08:00
link Add "*at()" system calls 2020-09-18 12:39:12 +08:00
malloc Format c/c++ files in src, tools and test 2020-05-27 07:09:18 +00:00
mkdir Add "*at()" system calls 2020-09-18 12:39:12 +08:00
mmap Add msync system call and flush updates to shared file memory mappings 2020-07-17 16:57:00 +00:00
open Fix two bugs related to open directories 2020-09-18 12:39:12 +08:00
pipe Add the new epoll implementation 2020-11-10 14:34:40 +08:00
pipe_throughput Format c/c++ files in src, tools and test 2020-05-27 07:09:18 +00:00
prctl Add timerslack concept for libos and enbale prctl PR_GET_TIMERSLACK option 2020-09-18 12:39:12 +08:00
pthread Format c/c++ files in src, tools and test 2020-05-27 07:09:18 +00:00
rdtsc Fix the emulation of RDTSC instruction with ocall 2020-03-24 22:06:14 +08:00
readdir Add "*at()" system calls 2020-09-18 12:39:12 +08:00
rename Add "*at()" system calls 2020-09-18 12:39:12 +08:00
rlimit Format c/c++ files in src, tools and test 2020-05-27 07:09:18 +00:00
sched Add getcpu syscall 2020-08-15 19:12:39 +08:00
server Add notification mechanism for basic IO events 2020-07-18 00:27:26 +08:00
server_epoll Refine the data comparison in server_epoll test 2020-10-22 15:51:07 +08:00
signal Add sigtimedwait syscall 2020-09-29 18:10:30 +08:00
sleep Format c/c++ files in src, tools and test 2020-05-27 07:09:18 +00:00
spawn Format c/c++ files in src, tools and test 2020-05-27 07:09:18 +00:00
spawn_and_exit_latency Format c/c++ files in src, tools and test 2020-05-27 07:09:18 +00:00
stat Add "*at()" system calls 2020-09-18 12:39:12 +08:00
symlink Add "*at()" system calls 2020-09-18 12:39:12 +08:00
sysinfo Add support for sysinfo syscall 2020-06-13 03:33:32 +00:00
time Add clock_getres syscall 2020-06-13 03:33:32 +00:00
tls Format c/c++ files in src, tools and test 2020-05-27 07:09:18 +00:00
truncate Format c/c++ files in src, tools and test 2020-05-27 07:09:18 +00:00
uname Format c/c++ files in src, tools and test 2020-05-27 07:09:18 +00:00
unix_socket Add notification mechanism for basic IO events 2020-07-18 00:27:26 +08:00
unix_socket_throughput Format c/c++ files in src, tools and test 2020-05-27 07:09:18 +00:00
Makefile Add "*at()" system calls 2020-09-18 12:39:12 +08:00
Occlum.json Substitute ramFS with a temporary SEFS at "/tmp" 2020-08-15 19:12:39 +08:00
test_common.mk Polish build and install process 2020-07-08 11:51:33 +00:00