diff options
author | Alex Auvolat <alex.auvolat@ens.fr> | 2015-03-08 14:48:55 +0100 |
---|---|---|
committer | Alex Auvolat <alex.auvolat@ens.fr> | 2015-03-08 14:48:55 +0100 |
commit | 0985c6237b8592652d57efee2a964c4bc91ee455 (patch) | |
tree | 1ac06e7c924f9d34d738e23694d4efbbe9725123 /src/lib/libkogata/syscall.c | |
parent | ad63830f0d841c41291fc01aed6e54726bd0b93f (diff) | |
download | kogata-0985c6237b8592652d57efee2a964c4bc91ee455.tar.gz kogata-0985c6237b8592652d57efee2a964c4bc91ee455.zip |
Implement missing syscalls.
Diffstat (limited to 'src/lib/libkogata/syscall.c')
-rw-r--r-- | src/lib/libkogata/syscall.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/lib/libkogata/syscall.c b/src/lib/libkogata/syscall.c index c79096e..7ae0283 100644 --- a/src/lib/libkogata/syscall.c +++ b/src/lib/libkogata/syscall.c @@ -39,6 +39,15 @@ void usleep(int usecs) { call(SC_USLEEP, usecs, 0, 0, 0, 0); } +bool new_thread(entry_t entry, void* data) { + // TODO + return false; +} + +void exit_thread() { + call(SC_EXIT_THREAD, 0, 0, 0, 0, 0); +} + bool mmap(void* addr, size_t size, int mode) { return call(SC_MMAP, (uint32_t)addr, size, mode, 0, 0); } @@ -90,6 +99,18 @@ int get_mode(fd_t file) { return call(SC_GET_MODE, file, 0, 0, 0, 0); } +fd_pair_t make_channel(bool blocking) { + fd_pair_t ret; + call(SC_MK_CHANNEL, blocking, (uint32_t)&ret, 0, 0, 0); + return ret; +} +bool gen_token(fd_t file, token_t *tok) { + return call(SC_GEN_TOKEN, file, (uint32_t)tok, 0, 0, 0); +} +fd_t use_token(token_t *tok) { + return call(SC_USE_TOKEN, (uint32_t)tok, 0, 0, 0, 0); +} + bool make_fs(const char* name, const char* driver, fd_t source, const char* options) { volatile sc_make_fs_args_t args = { .driver = driver, |