forked from KolibriOS/kolibrios
Sysfunction 23v does not require task switch when waiting
git-svn-id: svn://kolibrios.org@531 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
957ae391e2
commit
58a419e855
@ -172,7 +172,14 @@ find_next_task:
|
||||
jne .noevents
|
||||
call get_event_for_app
|
||||
test eax, eax
|
||||
jz .waiting_for_event
|
||||
jnz @f
|
||||
mov eax, ebx
|
||||
shl eax, 8
|
||||
mov eax, [SLOT_BASE + APPDATA.wait_timeout + eax]
|
||||
cmp eax, [timer_ticks]
|
||||
jae .waiting_for_event
|
||||
xor eax, eax
|
||||
@@:
|
||||
mov [event_sched], eax
|
||||
mov [edi+TASKDATA.state], byte 0
|
||||
.noevents:
|
||||
|
@ -469,53 +469,34 @@ sys_getevent:
|
||||
mov [esp+36],eax
|
||||
ret
|
||||
|
||||
|
||||
align 4
|
||||
sys_wait_event_timeout:
|
||||
|
||||
mov ebx,[timer_ticks]
|
||||
add ebx,eax
|
||||
cmp ebx,[timer_ticks]
|
||||
jna .swfet2
|
||||
.swfet1:
|
||||
call get_event_for_app
|
||||
test eax,eax
|
||||
jne .eventoccur_time
|
||||
call change_task
|
||||
cmp ebx,[timer_ticks]
|
||||
jg .swfet1
|
||||
.swfet2:
|
||||
xor eax,eax
|
||||
.eventoccur_time:
|
||||
mov [esp+36],eax
|
||||
ret
|
||||
|
||||
|
||||
align 4
|
||||
|
||||
sys_waitforevent:
|
||||
or eax, 0xFFFFFFFF ; infinite timeout
|
||||
jmp @f
|
||||
|
||||
call get_event_for_app
|
||||
test eax,eax
|
||||
jne eventoccur
|
||||
newwait:
|
||||
sys_wait_event_timeout:
|
||||
add eax, [timer_ticks]
|
||||
@@:
|
||||
mov ebx, [current_slot]
|
||||
mov [ebx + APPDATA.wait_timeout], eax
|
||||
call get_event_for_app
|
||||
test eax, eax
|
||||
jnz eventoccur
|
||||
|
||||
mov eax, [TASK_BASE]
|
||||
mov [eax+TASKDATA.state], byte 5
|
||||
call change_task
|
||||
mov eax, [TASK_BASE]
|
||||
mov [eax+TASKDATA.state], byte 5
|
||||
call change_task
|
||||
|
||||
mov eax, [event_sched]
|
||||
|
||||
eventoccur:
|
||||
mov [esp+36],eax
|
||||
ret
|
||||
mov eax, [event_sched]
|
||||
eventoccur:
|
||||
mov [esp+36], eax
|
||||
ret
|
||||
|
||||
get_event_for_app:
|
||||
|
||||
pushad
|
||||
|
||||
mov edi,[TASK_BASE] ; WINDOW REDRAW
|
||||
test [edi+TASKDATA.event_mask],dword 1
|
||||
test [edi+TASKDATA.event_mask], 1
|
||||
jz no_eventoccur1
|
||||
;mov edi,[TASK_BASE]
|
||||
cmp [edi-twdw+WDATA.fl_redraw],byte 0
|
||||
|
@ -107,7 +107,7 @@ use16
|
||||
org 0x0
|
||||
jmp start_of_code
|
||||
|
||||
version db 'Kolibri OS version 0.7.0.0 pre ',13,10,13,10,0
|
||||
version db 'Kolibri OS version 0.6.5.0 ',13,10,13,10,0
|
||||
|
||||
include "boot/bootstr.inc" ; language-independent boot messages
|
||||
include "boot/preboot.inc"
|
||||
@ -2286,7 +2286,7 @@ endg
|
||||
|
||||
iglobal
|
||||
version_inf:
|
||||
db 0,7,0,0 ; version 0.7.0.0
|
||||
db 0,6,5,0 ; version 0.6.5.0
|
||||
db UID_KOLIBRI
|
||||
db 'Kolibri',0
|
||||
version_end:
|
||||
@ -2454,7 +2454,7 @@ sys_getbackground:
|
||||
jnz nogb1
|
||||
mov eax,[BgrDataWidth]
|
||||
shl eax,16
|
||||
mov ax,[BgrDataWidth]
|
||||
mov ax,[BgrDataHeight]
|
||||
mov [esp+36],eax
|
||||
ret
|
||||
nogb1:
|
||||
|
@ -127,8 +127,9 @@ struc APPDATA
|
||||
.io_map rd 2 ;+68
|
||||
.dbg_state dd ? ;+76
|
||||
.cur_dir dd ? ;+80
|
||||
.wait_timeout dd ? ;+84
|
||||
|
||||
db 44 dup(?) ;+84
|
||||
db 40 dup(?) ;+88
|
||||
|
||||
.wnd_shape dd ? ;+128
|
||||
.wnd_shape_scale dd ? ;+132
|
||||
|
Loading…
Reference in New Issue
Block a user