/* Status of a link (by name). */ int _lstat(const char *file, struct stat *st) { struct kernel_stat kst; int rv = syscall_errno (SYS_lstat, file, &kst, 0, 0, 0, 0); _conv_stat (st, &kst); return rv; }
void* sbrk(ptrdiff_t incr) { static unsigned long heap_end; if (heap_end == 0) { long brk = syscall_errno(SYS_brk, 0, 0, 0, 0); if(brk == -1) return (void*)-1; heap_end = brk; } if (syscall_errno(SYS_brk, heap_end + incr, 0, 0, 0) != heap_end + incr) return (void*)-1; heap_end += incr; return (void*)(heap_end - incr); }
void* sbrk(ptrdiff_t incr) { extern unsigned char _end; // Defined by linker static unsigned char* heap_end; if(heap_end == 0) heap_end = &_end; if(incr && syscall_errno(SYS_brk, heap_end+incr, 0, 0, 0) != heap_end+incr) return (void*)-1; heap_end += incr; return heap_end - incr; }
void _exit(int exit_status) { syscall_errno(SYS_exit, exit_status, 0, 0, 0); while (1); }
int unlink(const char* name) { return syscall_errno(SYS_unlink, name, 0, 0, 0); }
int link(const char* old_name, const char* new_name) { return syscall_errno(SYS_link, old_name, new_name, 0, 0); }
int close(int file) { return syscall_errno(SYS_close, file, 0, 0, 0); }
int lstat(const char* file, struct stat* st) { return syscall_errno(SYS_lstat, file, st, 0, 0); }
//------------------------------------------------------------------------ // openat //------------------------------------------------------------------------ // Open file relative to given directory int openat(int dirfd, const char* name, int flags, int mode) { return syscall_errno(SYS_openat, dirfd, name, flags, mode); }
ssize_t write(int file, const void* ptr, size_t len) { return syscall_errno(SYS_write, file, ptr, len, 0); }
off_t lseek(int file, off_t ptr, int dir) { return syscall_errno(SYS_lseek, file, ptr, dir, 0); }
int gettimeofday(struct timeval* tp, void* tzp) { return syscall_errno(SYS_gettimeofday, tp, 0, 0, 0); }
int faccessat(int dirfd, const char* file, int mode, int flags) { return syscall_errno(SYS_faccessat, dirfd, file, mode, flags); }
int access(const char* file, int mode) { return syscall_errno(SYS_access, file, mode, 0, 0); }
int fstatat(int dirfd, const char* file, struct stat* st, int flags) { return syscall_errno(SYS_fstatat, dirfd, file, st, flags); }
int open(const char* name, int flags, int mode) { return syscall_errno(SYS_open, name, flags, mode, 0); }
/* Read from a file. */ ssize_t _read(int file, void *ptr, size_t len) { return syscall_errno (SYS_read, file, ptr, len, 0, 0, 0); }
int fstat(int file, struct stat* st) { return syscall_errno(SYS_fstat, file, st, 0, 0); }