Subversion Repositories Kolibri OS

Rev

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

Rev 8130 Rev 8876
Line 3... Line 3...
3
;; Copyright (C) KolibriOS team 2004-2017. All rights reserved. ;;
3
;; Copyright (C) KolibriOS team 2004-2017. All rights reserved. ;;
4
;;  Distributed under terms of the GNU General Public License.  ;;
4
;;  Distributed under terms of the GNU General Public License.  ;;
5
;;                                                              ;;
5
;;                                                              ;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 7... Line 7...
7
 
7
 
Line 8... Line 8...
8
$Revision: 8130 $
8
$Revision: 8876 $
9
 
9
 
Line 10... Line 10...
10
F_READ              = 0x0001  ; file opened for reading
10
F_READ              = 0x0001  ; file opened for reading
Line 179... Line 179...
179
        lea     ecx, [ebp+PIPE.wlist]
179
        lea     ecx, [ebp+PIPE.wlist]
180
        cmp     ecx, [ebp+PIPE.wlist.next]
180
        cmp     ecx, [ebp+PIPE.wlist.next]
181
        je      @F
181
        je      @F
Line 182... Line 182...
182
 
182
 
183
        mov     ecx, [ecx+MUTEX_WAITER.task]
183
        mov     ecx, [ecx+MUTEX_WAITER.task]
184
        mov     [ecx+TASKDATA.state], 0         ;activate writer task
184
        mov     [ecx+TASKDATA.state], TSTATE_RUNNING         ;activate writer task
185
@@:
185
@@:
186
        cmp     [ebp+PIPE.count], 0
186
        cmp     [ebp+PIPE.count], 0
Line 187... Line 187...
187
        je      @F
187
        je      @F
188
 
188
 
189
        lea     eax, [ebp+PIPE.rlist]
189
        lea     eax, [ebp+PIPE.rlist]
Line 190... Line 190...
190
        cmp     eax, [ebp+PIPE.rlist.next]
190
        cmp     eax, [ebp+PIPE.rlist.next]
191
        je      @F
191
        je      @F
192
 
192
 
193
        mov     eax, [eax+MUTEX_WAITER.task]
193
        mov     eax, [eax+MUTEX_WAITER.task]
194
        mov     [eax+TASKDATA.state], 0         ;activate reader task
194
        mov     [eax+TASKDATA.state], TSTATE_RUNNING         ;activate reader task
195
@@:
195
@@:
Line 209... Line 209...
209
        list_add_tail esp, edx                  ;esp= new waiter, edx= list head
209
        list_add_tail esp, edx                  ;esp= new waiter, edx= list head
Line 210... Line 210...
210
 
210
 
211
        lea     ecx, [ebp+PIPE.pipe_lock]
211
        lea     ecx, [ebp+PIPE.pipe_lock]
Line 212... Line 212...
212
        call    mutex_unlock
212
        call    mutex_unlock
213
 
213
 
Line 214... Line 214...
214
        mov     [ebx+TASKDATA.state], 1
214
        mov     [ebx+TASKDATA.state], TSTATE_RUN_SUSPENDED
215
        call    change_task
215
        call    change_task
Line 274... Line 274...
274
        lea     eax, [ebp+PIPE.rlist]
274
        lea     eax, [ebp+PIPE.rlist]
275
        cmp     eax, [ebp+PIPE.rlist.next]
275
        cmp     eax, [ebp+PIPE.rlist.next]
276
        je      @F
276
        je      @F
Line 277... Line 277...
277
 
277
 
278
        mov     eax, [eax+MUTEX_WAITER.task]
278
        mov     eax, [eax+MUTEX_WAITER.task]
279
        mov     [eax+TASKDATA.state], 0         ;activate reader task
279
        mov     [eax+TASKDATA.state], TSTATE_RUNNING         ;activate reader task
280
@@:
280
@@:
281
        cmp     [ebp+PIPE.count], 4096
281
        cmp     [ebp+PIPE.count], 4096
Line 282... Line 282...
282
        je      @F
282
        je      @F
283
 
283
 
284
        lea     ecx, [ebp+PIPE.wlist]
284
        lea     ecx, [ebp+PIPE.wlist]
Line 285... Line 285...
285
        cmp     ecx, [ebp+PIPE.wlist.next]
285
        cmp     ecx, [ebp+PIPE.wlist.next]
286
        je      @F
286
        je      @F
287
 
287
 
288
        mov     ecx, [eax+MUTEX_WAITER.task]
288
        mov     ecx, [eax+MUTEX_WAITER.task]
Line 289... Line 289...
289
        mov     [ecx+TASKDATA.state], 0         ;activate writer task
289
        mov     [ecx+TASKDATA.state], TSTATE_RUNNING         ;activate writer task
290
@@:
290
@@:
Line 312... Line 312...
312
        list_add_tail esp, edx                  ;esp= new waiter, edx= list head
312
        list_add_tail esp, edx                  ;esp= new waiter, edx= list head
Line 313... Line 313...
313
 
313
 
314
        lea     ecx, [ebp+PIPE.pipe_lock]
314
        lea     ecx, [ebp+PIPE.pipe_lock]
Line 315... Line 315...
315
        call    mutex_unlock
315
        call    mutex_unlock
316
 
316
 
Line 317... Line 317...
317
        mov     [ecx+TASKDATA.state], 1
317
        mov     [ecx+TASKDATA.state], TSTATE_RUN_SUSPENDED
318
        call    change_task
318
        call    change_task