Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 2434 → Rev 2433

/kernel/branches/Kolibri-acpi/core/sched.inc
60,8 → 60,7
end if
call find_next_task
jz .return ; the same task -> skip switch
@@:
mov byte[DONT_SWITCH], 1
@@: mov byte[DONT_SWITCH], 1
call do_change_task
.return:
popad
122,8 → 121,7
jb @f
xor bh, bh
mov edi, CURRENT_TASK
@@:
inc bh ; ebx += APPDATA.size
@@: inc bh ; ebx += APPDATA.size
add edi, 0x20; edi += TASKDATA.size
mov al, [edi+TASKDATA.state]
test al, al
142,8 → 140,7
sub ecx, [ebx+APPDATA.wait_begin]
cmp ecx, [ebx+APPDATA.wait_timeout]
jb .loop
@@:
mov [ebx+APPDATA.wait_param], eax ; retval for wait
@@: mov [ebx+APPDATA.wait_param], eax ; retval for wait
mov [edi+TASKDATA.state], 0
.found:
mov [CURRENT_TASK], bh
217,23 → 214,28
mov reg, eax
} lodsReg dr0, dr1, dr2, dr3, dr7
purge lodsReg
@@:
ret
@@: ret
;end.
 
 
 
struct MUTEX_WAITER
list LHEAD
task dd ?
ends
struc MUTEX_WAITER
{
.list LHEAD
.task rd 1
.sizeof:
};
 
virtual at 0
MUTEX_WAITER MUTEX_WAITER
end virtual
 
;void __fastcall mutex_init(struct mutex *lock)
 
align 4
mutex_init:
mov [ecx+MUTEX.lhead.next], ecx
mov [ecx+MUTEX.lhead.prev], ecx
mov [ecx+MUTEX.wait.next], ecx
mov [ecx+MUTEX.wait.prev], ecx
mov [ecx+MUTEX.count], 1
ret
 
249,7 → 251,7
pushfd
cli
 
sub esp, sizeof.MUTEX_WAITER
sub esp, MUTEX_WAITER.sizeof
 
list_add_tail esp, ecx ;esp= new waiter, ecx= list head
 
272,12 → 274,12
 
mov [eax+MUTEX_WAITER.list.next], edx
mov [edx+MUTEX_WAITER.list.prev], eax
cmp [ecx+MUTEX.lhead.next], ecx
cmp [ecx+MUTEX.wait.next], ecx
jne @F
 
mov [ecx+MUTEX.count], 0
@@:
add esp, sizeof.MUTEX_WAITER
add esp, MUTEX_WAITER.sizeof
 
popfd
.done:
291,7 → 293,7
pushfd
cli
 
mov eax, [ecx+MUTEX.lhead.next]
mov eax, [ecx+MUTEX.wait.next]
cmp eax, ecx
mov [ecx+MUTEX.count], 1
je @F