include "macros.inc" STDOUT equ 1 STDERR equ 2 SYS_read equ 0 ;; ssize_t read(int fd, void buf[.count], size_t count); macro read fd,buf,count { syscall3 SYS_read, fd, buf, count } SYS_write equ 1 ;; ssize_t write(int fd, const void buf[.count], size_t count); macro write fd,buf,count { syscall3 SYS_write, fd, buf, count } SYS_open equ 2 ;; int open(const char *pathname, int flags); macro open pathname, flags { syscall2 SYS_open, pathname, flags } SYS_close equ 3 ;; int close(int fd); macro close fd { syscall1 SYS_close, fd } SYS_stat equ 4 ;; int stat(const char *restrict pathname ;; struct stat *restrict statbuf); macro stat pathname, statbuf { syscall2 SYS_stat, pathname, statbuf } PROT_READ equ 1 MAP_PRIVATE = 2 SYS_mmap equ 9 ;; void *mmap(void addr[.length], size_t length, int prot, int flags, ;; int fd, off_t offset); macro mmap addr, length, prot, flags, fd, offset { syscall6 SYS_mmap, addr, length, prot, flags, fd, offset } SYS_munmap equ 11 ;; int munmap(void addr[.length], size_t length); macro munmap addr, length { syscall2 SYS_munmap, addr, length } SYS_alarm equ 37 ;; unsigned int alarm(unsigned int seconds); macro alarm seconds { syscall1 SYS_alarm, seconds } SYS_exit equ 60 ;; [[noreturn]] void _exit(int status); macro exit status { syscall1 SYS_exit, status }