Non-optional mlibc sysdeps
-
mlibc
void sys_libc_log(const char *message);
[[noreturn]] void sys_libc_panic();
int sys_tcb_set(void *pointer);
int sys_futex_wait(int *pointer, int expected, const struct timespec *time);
int sys_futex_wake(int *pointer);
int sys_anon_allocate(size_t size, void **pointer);
int sys_anon_free(void *pointer, size_t size);
int sys_open(const char *pathname, int flags, mode_t mode, int *fd);
int sys_read(int fd, void *buf, size_t count, ssize_t *bytes_read);
int sys_seek(int fd, off_t offset, int whence, off_t *new_offset);
int sys_close(int fd);
int sys_vm_map(void *hint, size_t size, int prot, int flags, int fd, off_t offset, void **window);
int sys_vm_unmap(void *pointer, size_t size);
-
ANSI
[[noreturn]] void sys_exit(int status);
int sys_open(const char *pathname, int flags, mode_t mode, int *fd);
int sys_read(int fd, void *buf, size_t count, ssize_t *bytes_read);
int sys_write(int fd, const void *buf, size_t count, ssize_t *bytes_written);
int sys_seek(int fd, off_t offset, int whence, off_t *new_offset);
int sys_close(int fd);
int sys_clock_get(int clock, time_t *secs, long *nanos);
-
Linux
int sys_open(const char *pathname, int flags, mode_t mode, int *fd);
int sys_close(int fd);
int sys_read(int fd, void *buf, size_t count, ssize_t *bytes_read);
int sys_write(int fd, const void *buf, size_t count, ssize_t *bytes_written);
-
POSIX
void sys_libc_log(const char *message);
[[noreturn]] void sys_libc_panic();
int sys_futex_wait(int *pointer, int expected, const struct timespec *time);
int sys_futex_wake(int *pointer);
[[noreturn]] void sys_exit(int status);
int sys_clock_get(int clock, time_t *secs, long *nanos);
int sys_open(const char *pathname, int flags, mode_t mode, int *fd);
int sys_read(int fd, void *buf, size_t count, ssize_t *bytes_read);
int sys_write(int fd, const void *buf, size_t count, ssize_t *bytes_written);
int sys_seek(int fd, off_t offset, int whence, off_t *new_offset);
int sys_close(int fd);
int sys_vm_map(void *hint, size_t size, int prot, int flags, int fd, off_t offset, void **window);
int sys_vm_unmap(void *pointer, size_t size);
-
RTDL
int sys_tcb_set(void *pointer);
-
Notes:
sys_vm_map
return pointer contents must be zeroed. Thewindow
double-pointer must be set to the returned area.
Functions must return 0 on success, and errno on failure.