Subversion Repositories Kolibri OS

Rev

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