; 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