forked from KolibriOS/kolibrios
fix futex freezes
git-svn-id: svn://kolibrios.org@9871 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
2fbbec1b40
commit
6dc1dec037
@ -185,13 +185,12 @@ align 4
|
||||
lea esi, [ebp + FUTEX.wait_list]
|
||||
|
||||
list_add_tail esp, esi ;esp= new waiter, esi= list head
|
||||
sti
|
||||
.again_timeout:
|
||||
mov [ebx + APPDATA.state], TSTATE_WAITING
|
||||
call change_task
|
||||
mov eax, [ebx + APPDATA.wait_param]
|
||||
test eax, eax
|
||||
jz .timeout
|
||||
DEBUGF 1, "FUTEX no timeout [ecx]=%x edx=%x\n", [ecx], edx
|
||||
mov eax, edx
|
||||
lock cmpxchg [ecx], edx
|
||||
jz .again_timeout
|
||||
@ -205,11 +204,8 @@ align 4
|
||||
ret
|
||||
|
||||
.timeout:
|
||||
cli
|
||||
list_del esp
|
||||
sti
|
||||
add esp, sizeof.MUTEX_WAITER
|
||||
DEBUGF 1, "FUTEX timeout\n"
|
||||
popfd
|
||||
mov [esp + SYSCALL_STACK.eax], -1
|
||||
ret
|
||||
|
Loading…
Reference in New Issue
Block a user