syscall.asm (3046B)
1 sys_open_directory:;rdi = path, rax = ret ( fd ) 2 stackpush 3 mov rsi, OPEN_DIRECTORY | OPEN_RDONLY ;flags 4 mov rax, SYS_OPEN 5 syscall 6 stackpop 7 ret 8 9 sys_create_tcp_socket: 10 stackpush 11 mov rdi, AF_INET 12 mov rsi, SOCK_STREAM 13 mov rdx, PROTO_TCP 14 mov rax, SYS_SOCKET 15 syscall 16 stackpop 17 ret 18 19 sys_reuse:;rdi - socket 20 stackpush 21 mov r8, 8 ;sizeof int 22 mov r10, one_constant ;pointer to 1 23 mov rsi, LEVEL_SOL_TCP 24 mov rdx, SOCKOPT_TCP_REUSEADDR 25 mov rax, SYS_SETSOCKOPT 26 syscall 27 stackpop 28 ret 29 30 sys_bind_server: 31 stackpush 32 33 mov rsi, [listen_port] 34 mov [sa + sin_port], rsi 35 36 mov rdi, [listen_socket] 37 mov rsi, sa 38 mov rdx, 16 39 mov rax, SYS_BIND 40 syscall 41 stackpop 42 ret 43 44 sys_listen: 45 stackpush 46 mov rdi, [listen_socket] 47 mov rsi, 100000000;backlog 48 mov rax, SYS_LISTEN 49 syscall 50 stackpop 51 ret 52 53 sys_mmap_mem: 54 stackpush 55 mov rsi, rdi ;Size 56 xor rdi, rdi ;Preferred address (don't care) 57 mov rdx, MMAP_PROT_READ | MMAP_PROT_WRITE ;Protection Flags 58 mov r10, MMAP_MAP_PRIVATE | MMAP_MAP_ANON ;Flags 59 xor r8, r8 60 dec r8 ;-1 fd because of MMAP_MAP_ANON 61 xor r9, r9 ;Offset 62 mov rax, SYS_MMAP 63 syscall 64 stackpop 65 ret 66 67 sys_accept: 68 stackpush 69 mov rdi, [listen_socket] 70 xor rsi, rsi 71 xor rdx, rdx 72 mov rax, SYS_ACCEPT 73 syscall 74 stackpop 75 ret 76 77 sys_cork:;rdi - socket 78 stackpush 79 mov r10, one_constant ;pointer to 1 80 mov r8, 8 ;sizeof int 81 mov rsi, LEVEL_IPPROTO_TCP 82 mov rdx, SOCKOPT_TCP_CORK 83 mov rax, SYS_SETSOCKOPT 84 syscall 85 stackpop 86 ret 87 88 sys_uncork:;rdi - socket 89 stackpush 90 mov r10, one_constant ;pointer to 1 91 mov r8, 8 ;sizeof int 92 mov rsi, LEVEL_IPPROTO_TCP 93 mov rdx, SOCKOPT_TCP_CORK 94 mov rax, SYS_SETSOCKOPT 95 syscall 96 stackpop 97 ret 98 99 sys_sendfile: ;rdi - outfd, rsi - infd, rdx - file size 100 stackpush 101 mov r10, rdx 102 xor rdx, rdx 103 mov rax, SYS_SENDFILE 104 syscall 105 stackpop 106 ret 107 108 sys_open: 109 stackpush 110 mov rsi, OPEN_RDONLY ;flags 111 mov rax, SYS_OPEN 112 syscall 113 stackpop 114 ret 115 116 sys_close: 117 stackpush 118 mov rax, SYS_CLOSE 119 syscall 120 stackpop 121 ret 122 123 sys_write: 124 stackpush 125 mov rdx, rsi ;length 126 mov rsi, rdi ;buffer 127 mov rdi, FD_STDOUT 128 mov rax, SYS_WRITE 129 syscall 130 stackpop 131 ret 132 133 sys_send: 134 stackpush 135 xor r10, r10 136 xor r8, r8 137 xor r9, r9 138 mov rax, SYS_SENDTO 139 syscall 140 stackpop 141 ret 142 143 sys_recv: 144 stackpush 145 xor r10, r10 ; flags 146 xor r8, r8 147 xor r9, r9 148 mov rax, SYS_RECVFROM 149 syscall 150 stackpop 151 ret 152 153 sys_lseek:; rdi - fd, rsi - offset, rdx - flag 154 stackpush 155 mov rax, SYS_LSEEK 156 syscall 157 stackpop 158 ret 159