Subversion Repositories Kolibri OS

Rev

Rev 5605 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5605 Rev 6078
Line 5... Line 5...
5
;;                                                              ;;
5
;;                                                              ;;
6
;; Synhronization for MenuetOS.                                 ;;
6
;; Synhronization for MenuetOS.                                 ;;
7
;; Author: Halyavin Andrey, halyavin@land.ru                    ;;
7
;; Author: Halyavin Andrey, halyavin@land.ru                    ;;
8
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
8
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 9... Line 9...
9
 
9
 
Line 10... Line 10...
10
$Revision: 5605 $
10
$Revision: 6078 $
11
 
11
 
12
align 4
12
align 4
13
;struct futex*  __fastcall create_futex(int *ptr)
13
;struct futex*  __fastcall create_futex(int *ptr)
Line 142... Line 142...
142
        pushfd
142
        pushfd
143
        cli
143
        cli
Line 144... Line 144...
144
 
144
 
145
        sub     esp, sizeof.MUTEX_WAITER
145
        sub     esp, sizeof.MUTEX_WAITER
146
        mov     ebx, [TASK_BASE]
-
 
147
        mov     [ebx+TASKDATA.state], 1
146
        mov     ebx, [TASK_BASE]
148
        mov     [esp+MUTEX_WAITER.task], ebx
147
        mov     [esp+MUTEX_WAITER.task], ebx
Line 149... Line 148...
149
        lea     esi, [ebp+FUTEX.wait_list]
148
        lea     esi, [ebp+FUTEX.wait_list]
Line 150... Line 149...
150
 
149
 
-
 
150
        list_add_tail esp, esi      ;esp= new waiter, esi= list head
151
        list_add_tail esp, esi      ;esp= new waiter, esi= list head
151
 
Line 152... Line 152...
152
 
152
.again:
153
.again:
153
        mov     [ebx+TASKDATA.state], 1
Line 197... Line 197...
197
        mov     eax, [timer_ticks]
197
        mov     eax, [timer_ticks]
198
        mov     [ebx+APPDATA.wait_begin], eax
198
        mov     [ebx+APPDATA.wait_begin], eax
199
        mov     eax, [TASK_BASE]
199
        mov     eax, [TASK_BASE]
200
        mov     [eax+TASKDATA.state], 5
200
        mov     [eax+TASKDATA.state], 5
Line 201... Line 201...
201
 
201
 
202
        mov     [esp+MUTEX_WAITER.task], ebx
202
        mov     [esp+MUTEX_WAITER.task], eax
Line 203... Line 203...
203
        lea     esi, [ebp+FUTEX.wait_list]
203
        lea     esi, [ebp+FUTEX.wait_list]
Line 204... Line 204...
204
 
204