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 |