Subversion Repositories Kolibri OS

Rev

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