Rev 5037 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5037 | Rev 5085 | ||
---|---|---|---|
Line 13... | Line 13... | ||
13 | mov [head], eax |
13 | mov [head], eax |
14 | mov [eax + node.next], ebx |
14 | mov [eax + node.next], ebx |
15 | pop ebx |
15 | pop ebx |
16 | ret |
16 | ret |
Line 17... | Line 17... | ||
17 | 17 | ||
18 | linkedlist_delete: |
18 | linkedlist_unlink: |
- | 19 | push ebx ecx |
|
- | 20 | test eax, eax |
|
19 | push ebx ecx |
21 | jz .invalid_pointer |
20 | mov ebx, eax ; eax - pointer to node for delete |
22 | mov ebx, eax ; eax - pointer to node for unlink |
21 | cmp eax, [head] |
23 | cmp eax, [head] |
22 | jz .unlink_head |
- | |
23 | 24 | jz .unlink_head |
|
24 | .getnext: |
25 | .getnext: |
25 | cmp [ebx+node.next], eax |
26 | cmp [ebx+node.next], eax |
26 | jz .unlink |
27 | jz .unlink |
27 | cmp [ebx+node.next], 0 |
28 | cmp [ebx+node.next], 0 |
28 | jz .invalid_pointer |
29 | jz .invalid_pointer |
29 | mov ebx, [ebx+node.next] |
30 | mov ebx, [ebx+node.next] |
30 | jmp .getnext |
- | |
31 | 31 | jmp .getnext |
|
32 | .unlink: |
32 | .unlink: |
33 | mov ecx, [eax+node.next] |
33 | mov ecx, [eax+node.next] |
34 | mov [ebx+node.next], ecx |
34 | mov [ebx+node.next], ecx |
35 | jmp @f |
- | |
36 | 35 | jmp @f |
|
37 | .unlink_head: |
36 | .unlink_head: |
38 | mov ebx, [eax+node.next] |
37 | mov ebx, [eax+node.next] |
39 | mov [head], ebx |
38 | mov [head], ebx |
40 | @@: |
- | |
41 | mov ecx, eax |
- | |
42 | call Kfree |
39 | @@: |
43 | .invalid_pointer: |
40 | .invalid_pointer: |
44 | pop ecx ebx |
41 | pop ecx ebx |
Line 45... | Line 42... | ||
45 | ret |
42 | ret |