occlum/src/libos
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
..
include Fix the syscall interface bug 2020-08-15 19:12:40 +08:00
src Add the new epoll implementation 2020-11-10 14:34:40 +08:00
Cargo.lock Bump version to 0.17.0 2020-10-22 19:53:20 +08:00
Cargo.toml Bump version to 0.17.0 2020-10-22 19:53:20 +08:00
Enclave.lds Load and run a Hello World program 2019-02-16 16:23:30 +08:00
Makefile Use sccache to accelerate Rust build 2020-11-05 21:54:57 +08:00
rust-toolchain Upgrade Intel SGX SDK to 2.11 and Rust SGX SDK accordingly 2020-09-18 15:39:58 +08:00