echo server, multiple clients, lines <256 bytes
This commit is contained in:
parent
d54596514c
commit
29f54ba779
6 changed files with 304 additions and 112 deletions
30
pollfds.s
Normal file
30
pollfds.s
Normal file
|
@ -0,0 +1,30 @@
|
|||
; edi - fd
|
||||
; si - events
|
||||
pollfds__append:
|
||||
; TODO check against pollfds_capacity
|
||||
mov r10, [pollfds_len]
|
||||
mov [pollfds + r10 * pollfd_size], edi
|
||||
mov [pollfds + r10 * pollfd_size + 4], si
|
||||
mov r11w, 0
|
||||
mov [pollfds + r10 * pollfd_size + 6], r11w
|
||||
add r10, 1
|
||||
mov [pollfds_len], r10
|
||||
ret
|
||||
|
||||
; rdi - pollfds array index to remove
|
||||
pollfds__remove:
|
||||
mov r11, [pollfds_len]
|
||||
cmp rdi, r11
|
||||
jge return ; XXX index out of bounds, do some other error?
|
||||
cmp r11, 1
|
||||
jle pollfds__clear
|
||||
mov r10, [pollfds + (r11 - 1) * pollfd_size]
|
||||
mov [pollfds + rdi * pollfd_size], r10
|
||||
sub r11, 1
|
||||
mov [pollfds_len], r11
|
||||
ret
|
||||
|
||||
pollfds__clear:
|
||||
mov r10, 0
|
||||
mov [pollfds_len], r10
|
||||
ret
|
Loading…
Add table
Add a link
Reference in a new issue