30 lines
725 B
ArmAsm
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
|