/drivers/usb/usbftdi/linkedlist.inc |
---|
15,12 → 15,13 |
pop ebx |
ret |
linkedlist_delete: |
linkedlist_unlink: |
push ebx ecx |
mov ebx, eax ; eax - pointer to node for delete |
test eax, eax |
jz .invalid_pointer |
mov ebx, eax ; eax - pointer to node for unlink |
cmp eax, [head] |
jz .unlink_head |
.getnext: |
cmp [ebx+node.next], eax |
jz .unlink |
28,18 → 29,14 |
jz .invalid_pointer |
mov ebx, [ebx+node.next] |
jmp .getnext |
.unlink: |
mov ecx, [eax+node.next] |
mov [ebx+node.next], ecx |
jmp @f |
.unlink_head: |
mov ebx, [eax+node.next] |
mov [head], ebx |
@@: |
mov ecx, eax |
call Kfree |
.invalid_pointer: |
pop ecx ebx |
ret |