Rev 4975 | Rev 4997 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
4979 | gtament | 1 | head dd 0 |
4975 | gtament | 2 | node equ ftdi_context |
3 | node.next equ ftdi_context.next_context |
||
4 | linkedlist: |
||
5 | |||
6 | .add: |
||
4979 | gtament | 7 | push ebx |
8 | mov ebx, [head] |
||
9 | mov [head], eax |
||
10 | mov [eax + node.next], ebx |
||
11 | pop ebx |
||
12 | ret |
||
4975 | gtament | 13 | |
14 | .delete: |
||
4979 | gtament | 15 | push ebx ecx |
16 | mov ebx, eax ; eax - pointer to node for delete |
||
17 | cmp eax, [head] |
||
18 | jz .unlink_head |
||
4975 | gtament | 19 | |
20 | .getnext: |
||
4979 | gtament | 21 | cmp [ebx+node.next], eax |
22 | jz .unlink |
||
23 | cmp [ebx+node.next], 0 |
||
24 | jz .invalid_pointer |
||
25 | mov ebx, [ebx+node.next] |
||
26 | jmp .getnext |
||
4975 | gtament | 27 | |
28 | .unlink: |
||
4979 | gtament | 29 | mov ecx, [eax+node.next] |
30 | mov [ebx+node.next], ecx |
||
31 | jmp @f |
||
4975 | gtament | 32 | |
33 | |||
34 | .unlink_head: |
||
4979 | gtament | 35 | mov ebx, [eax+node.next] |
36 | mov [head], ebx |
||
4975 | gtament | 37 | @@: |
4979 | gtament | 38 | mov ecx, eax |
39 | call Kfree |
||
4975 | gtament | 40 | .invalid_pointer: |
4979 | gtament | 41 | pop ecx ebx |
42 | ret |
||
4975 | gtament | 43 | |
44 | .gethead: |
||
4979 | gtament | 45 | mov eax, [head] |
46 | ret |
||
4975 | gtament | 47 | |
48 | restore node |
||
4979 | gtament | 49 | restore node.next |