x64-httpd/pollfds.s

30 lines
725 B
ArmAsm

; 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