separate into files
This commit is contained in:
parent
0038b22aca
commit
9f3d59cf15
3 changed files with 68 additions and 75 deletions
61
server.s
Normal file
61
server.s
Normal file
|
@ -0,0 +1,61 @@
|
|||
; Returns (in rax) the server's file descriptor
|
||||
make_server:
|
||||
mov rax, SYS_UNLINK
|
||||
mov rdi, server_path
|
||||
syscall
|
||||
|
||||
mov rax, SYS_SOCKET
|
||||
mov rdi, AF_UNIX
|
||||
mov rsi, SOCK_STREAM
|
||||
mov rdx, 0
|
||||
syscall
|
||||
push rax
|
||||
|
||||
call nonblocking
|
||||
call make_sockaddr
|
||||
pop r10
|
||||
|
||||
mov rax, SYS_BIND
|
||||
mov rdi, r10
|
||||
mov rsi, sockaddr
|
||||
mov rdx, sockaddr_size
|
||||
syscall
|
||||
|
||||
mov rax, SYS_LISTEN
|
||||
mov rdi, r10
|
||||
mov rsi, 100
|
||||
syscall
|
||||
|
||||
mov rax, r10
|
||||
ret
|
||||
|
||||
nonblocking:
|
||||
mov r10, rax
|
||||
|
||||
mov rax, SYS_FCNTL
|
||||
mov rdi, r10
|
||||
mov rsi, F_GETFL
|
||||
syscall
|
||||
|
||||
mov r11, rax
|
||||
xor r11, O_NONBLOCK
|
||||
|
||||
mov rax, SYS_FCNTL
|
||||
mov rdi, r10
|
||||
mov rsi, F_SETFL
|
||||
mov rdx, r11
|
||||
syscall
|
||||
|
||||
ret
|
||||
|
||||
make_sockaddr:
|
||||
mov word [sockaddr], AF_UNIX
|
||||
mov rax, 0
|
||||
|
||||
make_sockaddr__copy_server_path:
|
||||
cmp rax, server_path_len
|
||||
jge return
|
||||
mov r10, [server_path + rax]
|
||||
mov [sockaddr + rax + 2], r10
|
||||
add rax, 8
|
||||
jmp make_sockaddr__copy_server_path
|
Loading…
Add table
Add a link
Reference in a new issue