Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 8868 → Rev 8869

/kernel/trunk/const.inc
220,7 → 220,7
window_data = OS_BASE + 0x0001000
 
TASK_TABLE = OS_BASE + 0x0003000
CURRENT_TASK = OS_BASE + 0x0003000
;CURRENT_TASK = OS_BASE + 0x0003000
;TASK_COUNT = OS_BASE + 0x0003004
TASK_BASE = OS_BASE + 0x0003010
TASK_DATA = OS_BASE + 0x0003020
276,7 → 276,7
 
new_app_base = 0;
 
twdw = CURRENT_TASK - window_data
twdw = TASK_TABLE - window_data
 
std_application_base_address = new_app_base
RING0_STACK_SIZE = 0x2000
504,15 → 504,17
wait_test dd ? ;+96 +++
wait_param dd ? ;+100 +++
tls_base dd ? ;+104
dd ? ;+108
dd ? ;+112
event_mask dd ? ;+108 ; stores event types allowed for task
tid dd ? ;+112 ; thread id
draw_bgr_x dd ? ;+116
draw_bgr_y dd ? ;+120
dd ? ;+124
state db ? ;+124 ; thread state
db ? ;+125
dw ? ;+126
wnd_shape dd ? ;+128
wnd_shape_scale dd ? ;+132
dd ? ;+136
dd ? ;+140
mem_start dd ? ;+136 ;;
counter_sum dd ? ;+140 ;;
saved_box BOX ;+144
ipc_start dd ? ;+160
ipc_size dd ? ;+164
529,7 → 531,9
wnd_clientbox BOX ;+216
priority dd ? ;+232
in_schedule LHEAD ;+236
rd 3 ;+244
counter_add dd ? ;+244 ;;
cpu_usage dd ? ;+248 ;;
dd ? ;+252
ends
 
assert sizeof.APPDATA = 256
537,19 → 541,20
APP_OBJ_OFFSET = 48
APP_EV_OFFSET = 40
 
; Note: in future TASKDATA will be merged into APPDATA
struct TASKDATA
event_mask dd ? ; mask which stores event types allowed for task
pid dd ?
dw ?
state db ?
db ?
dw ?
wnd_number db ?
db ?
mem_start dd ?
counter_sum dd ?
counter_add dd ?
cpu_usage dd ?
event_mask dd ? ;+0 mask which stores event types allowed for task
pid dd ? ;+4
dw ? ;+8
state db ? ;+10
db ? ;+11
dw ? ;+12
wnd_number db ? ;+14
db ? ;+15
mem_start dd ? ;+16
counter_sum dd ? ;+20
counter_add dd ? ;+24
cpu_usage dd ? ;+28
ends
 
TSTATE_RUNNING = 0
/kernel/trunk/core/debug.inc
48,7 → 48,7
jz .ret_bad
shl eax, 5
push ebx
mov ebx, [CURRENT_TASK]
mov ebx, [current_slot_idx]
cmp [SLOT_BASE+eax*8+APPDATA.debugger_slot], ebx
pop ebx
jnz .ret_bad
92,7 → 92,7
call get_debuggee_slot
jc .ret
; } End patch
mov cl, [CURRENT_TASK+eax+TASKDATA.state] ; process state
mov cl, [TASK_TABLE+eax+TASKDATA.state] ; process state
test cl, cl
jz .1
cmp cl, 5
99,7 → 99,7
jnz .ret
mov cl, 2
.2:
mov [CURRENT_TASK+eax+TASKDATA.state], cl
mov [TASK_TABLE+eax+TASKDATA.state], cl
.ret:
sti
ret
108,7 → 108,7
jmp .2
 
do_resume:
mov cl, [CURRENT_TASK+eax+TASKDATA.state]
mov cl, [TASK_TABLE+eax+TASKDATA.state]
cmp cl, 1
jz .1
cmp cl, 2
115,7 → 115,7
jnz .ret
mov cl, 5
.2:
mov [CURRENT_TASK+eax+TASKDATA.state], cl
mov [TASK_TABLE+eax+TASKDATA.state], cl
.ret:
ret
.1:
416,7 → 416,7
pop ecx
pop ecx
pop ecx
cmp dword [CURRENT_TASK], 1
cmp dword [current_slot_idx], 1
jnz .notos
cmp [timer_ticks], edi
jae .ret
/kernel/trunk/core/dll.inc
354,7 → 354,7
 
align 4
proc get_curr_task
mov eax, [CURRENT_TASK]
mov eax, [current_slot_idx]
shl eax, 8
ret
endp
1211,9 → 1211,9
call malloc
test eax, eax
jz .fail_and_free_user
mov ebx, [CURRENT_TASK]
mov ebx, [current_slot_idx]
shl ebx, 5
mov edx, [CURRENT_TASK+ebx+TASKDATA.pid]
mov edx, [TASK_TABLE+ebx+TASKDATA.pid]
mov [eax+HDLL.pid], edx
push eax
call init_dlls_in_thread
/kernel/trunk/core/fpu.inc
168,7 → 168,7
mov edi, eax
 
mov ecx, [fpu_owner]
mov esi, [CURRENT_TASK]
mov esi, [current_slot_idx]
cmp ecx, esi
jne .save
 
216,7 → 216,7
mov edi, eax
 
mov ecx, [fpu_owner]
mov esi, [CURRENT_TASK]
mov esi, [current_slot_idx]
cmp ecx, esi
jne .save
 
276,7 → 276,7
cli
 
mov ecx, [fpu_owner]
mov eax, [CURRENT_TASK]
mov eax, [current_slot_idx]
cmp ecx, eax
jne .copy
 
318,7 → 318,7
cli
 
mov ecx, [fpu_owner]
mov eax, [CURRENT_TASK]
mov eax, [current_slot_idx]
cmp ecx, eax
jne .copy
 
372,7 → 372,7
mov es, ax
 
mov ebx, [fpu_owner]
cmp ebx, [CURRENT_TASK]
cmp ebx, [current_slot_idx]
je .exit
 
shl ebx, 8
383,7 → 383,7
mov eax, [xsave_eax]
mov edx, [xsave_edx]
xsave [ecx]
mov ebx, [CURRENT_TASK]
mov ebx, [current_slot_idx]
mov [fpu_owner], ebx
shl ebx, 8
mov ecx, [ebx+SLOT_BASE+APPDATA.fpu_state]
396,7 → 396,7
jnc .no_SSE
 
fxsave [eax]
mov ebx, [CURRENT_TASK]
mov ebx, [current_slot_idx]
mov [fpu_owner], ebx
shl ebx, 8
mov eax, [ebx+SLOT_BASE+APPDATA.fpu_state]
406,7 → 406,7
 
.no_SSE:
fnsave [eax]
mov ebx, [CURRENT_TASK]
mov ebx, [current_slot_idx]
mov [fpu_owner], ebx
shl ebx, 8
mov eax, [ebx+SLOT_BASE+APPDATA.fpu_state]
/kernel/trunk/core/heap.inc
1396,9 → 1396,9
mov edx, E_ACCESS
ja .fail
 
mov ebx, [CURRENT_TASK]
shl ebx, 5
mov ebx, [CURRENT_TASK + ebx + 4]
mov ebx, [current_slot_idx]
shl ebx, BSF sizeof.TASKDATA
mov ebx, [TASK_TABLE + ebx + TASKDATA.pid]
mov eax, sizeof.SMAP
 
call create_kernel_object
/kernel/trunk/core/sched.inc
93,7 → 93,7
;param:
; ebx = address of the APPDATA for incoming task (new)
;warning:
; [CURRENT_TASK] and [TASK_BASE] must be changed before (e.g. in find_next_task)
; [current_slot_idx] and [TASK_BASE] must be changed before (e.g. in find_next_task)
; [current_slot] is the outcoming (old), and set here to a new value (ebx)
;scratched: eax,ecx,esi
mov esi, ebx
140,7 → 140,7
mov eax, [xsave_eax]
mov edx, [xsave_edx]
xsave [ecx]
mov ecx, [CURRENT_TASK]
mov ecx, [current_slot_idx]
mov [fpu_owner], ecx
mov ecx, [current_slot]
mov ecx, [ecx+APPDATA.fpu_state]
261,7 → 261,7
; edi = address of the TASKDATA for the selected task
; ZF = 1 if the task is the same
;warning:
; [CURRENT_TASK] = bh , [TASK_BASE] = edi -- as result
; [current_slot_idx] = bh , [TASK_BASE] = edi -- as result
; [current_slot] is not set to new value (ebx)!!!
;scratched: eax,ecx
proc find_next_task
288,7 → 288,7
mov ebx, [ebx+APPDATA.in_schedule.next]
mov edi, ebx
shr edi, 3
add edi, CURRENT_TASK - (SLOT_BASE shr 3)
add edi, TASK_TABLE - (SLOT_BASE shr 3)
mov al, [edi+TASKDATA.state]
test al, al
jz .task_found ; state == 0
328,7 → 328,7
.found:
; the line below assumes APPDATA is 256 bytes long and SLOT_BASE is
; aligned on 0x10000
mov [CURRENT_TASK], bh
mov byte [current_slot_idx], bh
mov [TASK_BASE], edi
rdtsc ;call _rdtsc
mov [edi+TASKDATA.counter_add], eax; for next using update_counters
/kernel/trunk/core/sys32.inc
342,9 → 342,9
mov ecx, application_table_mutex
call mutex_lock
 
mov eax, [CURRENT_TASK]
shl eax, 5
add eax, CURRENT_TASK+TASKDATA.pid
mov eax, [current_slot_idx]
shl eax, BSF sizeof.TASKDATA
add eax, TASK_TABLE+TASKDATA.pid
mov eax, [eax]
 
mov [application_table_owner], eax
418,8 → 418,8
test edx, edx
jnz @F
pop esi
shl esi, 5
mov [CURRENT_TASK+esi+TASKDATA.state], 9
shl esi, BSF sizeof.TASKDATA
mov [TASK_TABLE+esi+TASKDATA.state], 9
ret
@@:
push edx ;save .process
506,8 → 506,8
jb .loop
; get process PID
mov eax, esi
shl eax, 5
mov eax, [eax+CURRENT_TASK+TASKDATA.pid]
shl eax, BSF sizeof.TASKDATA
mov eax, [eax+TASK_TABLE+TASKDATA.pid]
; compare current lock input with process PID
cmp eax, [PID_lock_input]
jne @f
578,12 → 578,12
; debuggee test
pushad
mov edi, esi
shl edi, 5
shl edi, BSF sizeof.TASKDATA
mov eax, [SLOT_BASE+edi*8+APPDATA.debugger_slot]
test eax, eax
jz .nodebug
movi ecx, 8
push dword [CURRENT_TASK+edi+TASKDATA.pid]; PID
push dword [TASK_TABLE+edi+TASKDATA.pid]; PID
push 2
call debugger_notify
pop ecx
638,8 → 638,8
jbe .nothing_to_activate
lea esi, [WIN_POS+eax*2]
movzx edi, word [esi] ; edi = process
shl edi, 5
cmp [CURRENT_TASK + edi + TASKDATA.state], byte 9 ; skip dead slots
shl edi, BSF sizeof.TASKDATA
cmp [TASK_TABLE + edi + TASKDATA.state], byte 9 ; skip dead slots
je .check_next_window
add edi, window_data
; \begin{diamond}[19.09.2006]
653,8 → 653,8
.dont_activate:
 
push esi ; remove hd1 & cd & flp reservation
shl esi, 5
mov esi, [esi+CURRENT_TASK+TASKDATA.pid]
shl esi, BSF sizeof.TASKDATA
mov esi, [esi+TASK_TABLE+TASKDATA.pid]
cmp [cd_status], esi
jnz @f
call free_cd_channel
669,8 → 669,8
 
pusha ; remove all port reservations
mov edx, esi
shl edx, 5
add edx, CURRENT_TASK
shl edx, BSF sizeof.TASKDATA
add edx, TASK_TABLE
mov edx, [edx+TASKDATA.pid]
 
rmpr0:
713,8 → 713,8
 
popa
mov edi, esi ; do not run this process slot
shl edi, 5
mov [edi+CURRENT_TASK + TASKDATA.state], byte 9
shl edi, BSF sizeof.TASKDATA
mov [edi+TASK_TABLE + TASKDATA.state], byte 9
; debugger test - terminate all debuggees
mov eax, 2
mov ecx, SLOT_BASE+2*0x100+APPDATA.debugger_slot
/kernel/trunk/core/taskman.inc
494,7 → 494,7
;ecx = offset of current process info entry
;ebx = maximum permitted offset
; state 9 means "not used"
cmp byte [TASK_TABLE+ecx+TASKDATA.state], 9
cmp byte [TASK_TABLE+ecx+TASKDATA.state], TSTATE_FREE
jz .endloop ;skip empty slots
cmp [TASK_TABLE+ecx+TASKDATA.pid], eax;check PID
jz .pid_found
970,7 → 970,7
rep movsd
 
shr ebx, 3
mov dword [CURRENT_TASK+ebx+0x10], 0
mov dword [TASK_TABLE+ebx+TASKDATA.mem_start], 0
 
mov ebx, [slot]
mov eax, ebx
980,7 → 980,7
; set window state to 'normal' (non-minimized/maximized/rolled-up) state
mov [ebx+window_data+WDATA.fl_wstate], WSTATE_NORMAL
mov [ebx+window_data+WDATA.fl_redraw], 1
add ebx, CURRENT_TASK ;ebx - pointer to information about process
add ebx, TASK_TABLE ;ebx - pointer to information about process
mov [ebx+TASKDATA.wnd_number], al;set window number on screen = process slot
 
mov [ebx+TASKDATA.event_mask], dword 1+2+4;set default event flags (see 40 function)
1039,10 → 1039,10
; set if debuggee
test byte [flags], 1
jz .no_debug
mov eax, [CURRENT_TASK]
mov eax, [current_slot_idx]
mov [SLOT_BASE+ebx*8+APPDATA.debugger_slot], eax
.no_debug:
mov [CURRENT_TASK+ebx+TASKDATA.state], dl
mov [TASK_TABLE+ebx+TASKDATA.state], dl
lea edx, [SLOT_BASE+ebx*8]
call scheduler_add_thread
ret
/kernel/trunk/core/timers.inc
49,7 → 49,7
 
; This internal function acquires the lock for the global list.
lock_timer_list:
mov edx, [CURRENT_TASK]
mov edx, [current_slot_idx]
@@:
xor eax, eax
lock cmpxchg [timer_list_owner], edx
/kernel/trunk/core/v86.inc
827,7 → 827,7
v86_irq2:
mov esi, [v86_irqhooks+edi*8] ; get VM handle
mov eax, [esi+V86_machine.process]
mov ecx, [CURRENT_TASK]
mov ecx, [current_slot_idx]
shl ecx, 8
cmp [SLOT_BASE+ecx+APPDATA.process], eax
jnz .notcurrent
900,7 → 900,7
call update_counters
lea edi, [ebx + 0x100000000 - SLOT_BASE]
shr edi, 3
add edi, CURRENT_TASK
add edi, TASK_TABLE
call find_next_task.found
call do_change_task
popad
/kernel/trunk/data32.inc
438,7 → 438,8
LFBSize dd ?
 
current_process dd ?
current_slot dd ? ; i.e. cureent thread
current_slot dd ? ; pointer to APPDATA of current thread
current_slot_idx dd ? ; index of current thread slot
thread_count dd ?
 
; device addresses
/kernel/trunk/fs/iso9660.inc
56,9 → 56,9
;-----------------------------------------------------------------------------
reserve_ok2:
push eax
mov eax, [CURRENT_TASK]
mov eax, [current_slot_idx]
shl eax, 5
mov eax, [eax+CURRENT_TASK+TASKDATA.pid]
mov eax, [eax+TASK_TABLE+TASKDATA.pid]
mov [cd_status], eax
pop eax
sti
/kernel/trunk/gui/button.inc
75,7 → 75,7
add edi, eax
; NOTE: this code doesn't rely on SYS_BUTTON struct,
; please revise it, if you change something.
mov ax, [CURRENT_TASK]
mov ax, word [current_slot_idx]
stosw
mov ax, dx
stosw ; button id number: bits 0-15
226,7 → 226,7
add esi, -sizeof.SYS_BUTTON
 
; does it belong to our process?
mov ax, [CURRENT_TASK]
mov ax, word [current_slot_idx]
cmp ax, [esi + SYS_BUTTON.pslot]
jne .next_button
 
/kernel/trunk/gui/event.inc
389,7 → 389,7
;info:
; client testing function for get_event_ex
;warning:
; -don't use [TASK_BASE],[current_slot],[CURRENT_TASK] - it is not for your slot
; -don't use [TASK_BASE],[current_slot],[current_slot_idx] - it is not for your slot
; -may be assumed, that interrupt are disabled
; -it is not restriction for scratched registers
;param:
410,7 → 410,7
;info:
; client testing function for wait_event
;warning:
; -don't use [TASK_BASE],[current_slot],[CURRENT_TASK] - it is not for your slot
; -don't use [TASK_BASE],[current_slot],[current_slot_idx] - it is not for your slot
; -may be assumed, that interrupt are disabled
; -it is not restriction for scratched registers
;param:
502,7 → 502,7
;info:
; client testing function for applications (f10,f23)
;warning:
; -don't use [TASK_BASE],[current_slot],[CURRENT_TASK] - it is not for your slot
; -don't use [TASK_BASE],[current_slot],[current_slot_idx] - it is not for your slot
; -may be assumed, that interrupt are disabled
; -it is not restriction for scratched registers
;param:
509,9 → 509,9
; ebx - APPDATA address of testing slot
;retval:
; eax - event number (=0 => no events)
movzx edi, bh ; bh is assumed as [CURRENT_TASK]
movzx edi, bh ; bh is assumed as [current_slot_idx]
shl edi, 5
add edi, CURRENT_TASK ; edi is assumed as [TASK_BASE]
add edi, TASK_TABLE ; edi is assumed as [TASK_BASE]
mov ecx, [edi+TASKDATA.event_mask]
and ecx, 0x7FFFFFFF
;--------------------------------------
/kernel/trunk/gui/skincode.inc
395,7 → 395,7
shl eax, 4
add eax, edi
 
mov bx, [CURRENT_TASK]
mov bx, word [current_slot_idx]
mov [eax], bx
mov word [eax+2], 1 ; button id
xor ebx, ebx
426,7 → 426,7
shl eax, 4
add eax, edi
 
mov bx, [CURRENT_TASK]
mov bx, word [current_slot_idx]
mov [eax], bx
mov word [eax+2], -1 ; button id
xor ebx, ebx
/kernel/trunk/gui/window.inc
59,7 → 59,7
; type IV & V - skinned window (resizable & not)
mov eax, [thread_count]
movzx eax, word[WIN_POS + eax * 2]
cmp eax, [CURRENT_TASK]
cmp eax, [current_slot_idx]
setz al
movzx eax, al
push eax
312,7 → 312,7
;------------------------------------------------------------------------------
;? <description>
;------------------------------------------------------------------------------
mov edi, [CURRENT_TASK]
mov edi, [current_slot_idx]
shl edi, 5
add edi, window_data
 
367,7 → 367,7
;------------------------------------------------------------------------------
syscall_window_settings: ;///// system function 71 ////////////////////////////
;------------------------------------------------------------------------------
mov edi, [CURRENT_TASK]
mov edi, [current_slot_idx]
shl edi, 5
or [edi + window_data + WDATA.fl_wstyle], WSTYLE_HASCAPTION
cmp ebx, 2
445,7 → 445,7
movzx edi, word[WIN_POS + esi * 2]
shl edi, 5 ;size of TASKDATA and WDATA = 32 bytes
 
cmp [CURRENT_TASK + edi + TASKDATA.state], TSTATE_FREE
cmp byte [TASK_TABLE + edi + TASKDATA.state], TSTATE_FREE
je .skip_window
 
add edi, window_data
985,7 → 985,7
movzx edi, word[WIN_POS + eax * 2]
shl edi, 5
; it is a unused slot?
cmp dword [edi+CURRENT_TASK+TASKDATA.state], 9
cmp byte [edi+TASK_TABLE+TASKDATA.state], TSTATE_FREE
je @f
; it is a hidden thread?
lea esi, [edi*8+SLOT_BASE+APPDATA.app_name]
1552,7 → 1552,7
;------------------------------------------------------------------------------
;< edx = pointer to WDATA struct
;------------------------------------------------------------------------------
mov eax, [CURRENT_TASK]
mov eax, [current_slot_idx]
shl eax, 5
add eax, window_data
; save window colors
1611,7 → 1611,7
 
pop edi ecx
 
mov esi, [CURRENT_TASK]
mov esi, [current_slot_idx]
movzx esi, word[WIN_STACK + esi * 2]
lea esi, [WIN_POS + esi * 2]
call waredraw
2125,8 → 2125,8
ja .exit.no_redraw
 
movzx edx, word[esi]
shl edx, 5
cmp [CURRENT_TASK + edx + TASKDATA.state], TSTATE_FREE
shl edx, 5 ; size of TASKDATA and WDATA is 32 bytes
cmp byte [TASK_TABLE + edx + TASKDATA.state], TSTATE_FREE
je .next_window
 
mov eax, [edi + WDATA.box.top]
2174,13 → 2174,13
xor eax, eax
mov edx, [thread_count]
movzx edx, word[WIN_POS + edx * 2]
cmp edx, [CURRENT_TASK]
cmp edx, [current_slot_idx]
jne @f
inc eax
;--------------------------------------
align 4
@@:
mov edx, [CURRENT_TASK]
mov edx, [current_slot_idx]
shl edx, 5
add edx, window_data
movzx ebx, [edx + WDATA.fl_wstyle]
2216,7 → 2216,7
;--------------------------------------
align 4
.2:
mov edi, [CURRENT_TASK]
mov edi, [current_slot_idx]
shl edi, 5
test [edi + window_data + WDATA.fl_wstyle], WSTYLE_HASCAPTION
jz .exit
2402,7 → 2402,7
movzx edi, word[WIN_POS + esi * 2]
shl edi, 5 ;size of TASKDATA and WDATA = 32 bytes
 
cmp [CURRENT_TASK + edi + TASKDATA.state], TSTATE_FREE
cmp byte [TASK_TABLE + edi + TASKDATA.state], TSTATE_FREE
je .skip_window
 
add edi, window_data
/kernel/trunk/kernel.asm
625,10 → 625,10
xor ecx, ecx
call scheduler_add_thread
 
mov dword [CURRENT_TASK], 2
mov dword [current_slot_idx], 2
mov [thread_count], 2
mov dword [current_slot], SLOT_BASE + sizeof.APPDATA*2
mov dword [TASK_BASE], CURRENT_TASK + sizeof.TASKDATA*2
mov dword [TASK_BASE], TASK_TABLE + sizeof.TASKDATA*2
 
; Move other CPUs to deep sleep, if it is useful
uglobal
1177,7 → 1177,7
 
mov eax, edx
shr eax, 3
add eax, CURRENT_TASK - (SLOT_BASE shr 3)
add eax, TASK_TABLE - (SLOT_BASE shr 3)
mov [eax+TASKDATA.wnd_number], dh
mov byte [eax+TASKDATA.pid], dh
 
1600,7 → 1600,7
; add window start x & y
mov ecx, [TASK_BASE]
 
mov edi, [CURRENT_TASK]
mov edi, [current_slot_idx]
shl edi, 8
 
mov eax, [ecx-twdw+WDATA.box.left]
1910,7 → 1910,7
shl ebx, 16
mov bx, word [esi-twdw+WDATA.box.top]
sub eax, ebx
mov edi, [CURRENT_TASK]
mov edi, [current_slot_idx]
shl edi, 8
sub ax, word[edi+SLOT_BASE+APPDATA.wnd_clientbox.top]
rol eax, 16
1968,7 → 1968,7
.msz:
mov edi, [thread_count]
movzx edi, word [WIN_POS + edi*2]
cmp edi, [CURRENT_TASK]
cmp edi, [current_slot_idx]
jne @f
mov ax, [MOUSE_SCROLL_H]
shl eax, 16
2217,17 → 2217,17
ja noprocessterminate
mov eax, [thread_count]
shl ecx, BSF sizeof.TASKDATA
mov edx, [ecx+CURRENT_TASK+TASKDATA.pid]
add ecx, CURRENT_TASK+TASKDATA.state
mov edx, [ecx+TASK_TABLE+TASKDATA.pid]
add ecx, TASK_TABLE+TASKDATA.state
cmp byte [ecx], TSTATE_FREE
jz noprocessterminate
push eax
lea eax, [(ecx-(CURRENT_TASK and 1FFFFFFFh)-TASKDATA.state)*8+SLOT_BASE]
lea eax, [(ecx-(TASK_TABLE and 1FFFFFFFh)-TASKDATA.state)*8+SLOT_BASE]
call is_kernel_thread
pop eax
jz noprocessterminate
push ecx edx
lea edx, [(ecx-(CURRENT_TASK and 1FFFFFFFh)-TASKDATA.state)*8+SLOT_BASE]
lea edx, [(ecx-(TASK_TABLE and 1FFFFFFFh)-TASKDATA.state)*8+SLOT_BASE]
call request_terminate
pop edx ecx
test eax, eax
2353,7 → 2353,7
 
cmp edx, -1
jne @f
mov edx, [CURRENT_TASK]
mov edx, [current_slot_idx]
@@:
cmp edx, [thread_count]
ja .fail
2363,7 → 2363,7
mov eax, edx
shl edx, 5
 
cmp [edx + CURRENT_TASK + TASKDATA.state], 9
cmp [edx + TASK_TABLE + TASKDATA.state], 9
je .fail
 
cmp ecx, 1
2408,7 → 2408,7
 
;------------------------------------------------------------------------------
sysfn_getidletime: ; 18.4 = GET IDLETIME
mov eax, [CURRENT_TASK+32+TASKDATA.cpu_usage]
mov eax, [TASK_TABLE+32+TASKDATA.cpu_usage]
mov [esp+32], eax
ret
;------------------------------------------------------------------------------
2875,7 → 2875,7
;--------------------------------------
align 4
@@:
mov eax, [CURRENT_TASK]
mov eax, [current_slot_idx]
mov [bgrlockpid], eax
cmp [img_background], static_background_data
jz .nomem
2923,7 → 2923,7
jnz nosb7
cmp [bgrlock], 0
jz .err
mov eax, [CURRENT_TASK]
mov eax, [current_slot_idx]
cmp [bgrlockpid], eax
jnz .err
mov eax, ecx
3103,7 → 3103,7
sys_getkey:
mov [esp + 32], dword 1
; test main buffer
mov ebx, [CURRENT_TASK] ; TOP OF WINDOW STACK
mov ebx, [current_slot_idx] ; TOP OF WINDOW STACK
movzx ecx, word [WIN_STACK + ebx * 2]
mov edx, [thread_count]
cmp ecx, edx
3158,7 → 3158,7
;------------------------------------------------------------------------------
align 4
sys_getbutton:
mov ebx, [CURRENT_TASK] ; TOP OF WINDOW STACK
mov ebx, [current_slot_idx] ; TOP OF WINDOW STACK
mov [esp + 32], dword 1
movzx ecx, word [WIN_STACK + ebx * 2]
mov edx, [thread_count] ; less than 256 processes
3195,7 → 3195,7
 
cmp ecx, -1 ; who am I ?
jne .no_who_am_i
mov ecx, [CURRENT_TASK]
mov ecx, [current_slot_idx]
.no_who_am_i:
cmp ecx, max_processes
ja .nofillbuf
3211,7 → 3211,7
shl ecx, 5
 
; +0: dword: memory usage
mov eax, [ecx+CURRENT_TASK+TASKDATA.cpu_usage]
mov eax, [ecx+TASK_TABLE+TASKDATA.cpu_usage]
mov [ebx], eax
; +10: 11 bytes: name of the process
push ecx
3238,7 → 3238,7
stosd
 
; +30: PID/TID
mov eax, [ecx+CURRENT_TASK+TASKDATA.pid]
mov eax, [ecx+TASK_TABLE+TASKDATA.pid]
stosd
 
; window position and size
3250,7 → 3250,7
movsd
 
; Process state (+50)
mov eax, dword [ecx+CURRENT_TASK+TASKDATA.state]
movzx eax, byte [ecx+TASK_TABLE+TASKDATA.state]
stosd
 
; Window client area box
3265,7 → 3265,7
stosb
 
; Event mask (+71)
mov EAX, dword [ECX+CURRENT_TASK+TASKDATA.event_mask]
mov EAX, dword [ECX+TASK_TABLE+TASKDATA.event_mask]
stosd
 
; Keyboard mode (+75)
3364,7 → 3364,7
cmp ebx, 1
jne no_widgets_away
; buttons away
mov ecx, [CURRENT_TASK]
mov ecx, [current_slot_idx]
sys_newba2:
mov edi, [BTN_ADDR]
cmp [edi], dword 0 ; empty button list ?
3402,7 → 3402,7
jnz srl1
 
mov edx, [TASK_BASE] ; return whole screen draw area for this app
add edx, draw_data - CURRENT_TASK
add edx, draw_data - TASK_TABLE
mov [edx + RECT.left], 0
mov [edx + RECT.top], 0
mov eax, [_display.width]
3565,7 → 3565,7
mov [mouse_active], 0
 
xor edi, edi
mov ebx, CURRENT_TASK
mov ebx, TASK_TABLE
 
mov ecx, [thread_count]
movzx eax, word [WIN_POS + ecx*2] ; active window
3707,7 → 3707,7
push ecx edx
cmp [edx+TASKDATA.state], TSTATE_FREE
jz .nokill
lea edx, [(edx-(CURRENT_TASK and 1FFFFFFFh))*8+SLOT_BASE]
lea edx, [(edx-(TASK_TABLE and 1FFFFFFFh))*8+SLOT_BASE]
cmp [edx+APPDATA.process], sys_proc
jz .nokill
call request_terminate
4453,7 → 4453,7
pop ecx
jz sys_putimage.exit
 
mov eax, [CURRENT_TASK]
mov eax, [current_slot_idx]
shl eax, 8
add dx, word [eax+SLOT_BASE+APPDATA.wnd_clientbox.top]
rol edx, 16
5015,7 → 5015,7
cmp ebx, 7
jae .not_support ;if >=8 then or eax,-1
 
mov edi, [CURRENT_TASK]
mov edi, [current_slot_idx]
jmp dword [f66call+ebx*4]
 
.not_support:
5112,9 → 5112,9
test eax, eax
jnz @f
; get current PID
mov eax, [CURRENT_TASK]
mov eax, [current_slot_idx]
shl eax, 5
mov eax, [eax+CURRENT_TASK+TASKDATA.pid]
mov eax, [eax+TASK_TABLE+TASKDATA.pid]
; set current PID for lock input
mov [PID_lock_input], eax
@@:
5127,9 → 5127,9
test eax, eax
jz @f
; get current PID
mov ebx, [CURRENT_TASK]
mov ebx, [current_slot_idx]
shl ebx, 5
mov ebx, [ebx+CURRENT_TASK+TASKDATA.pid]
mov ebx, [ebx+TASK_TABLE+TASKDATA.pid]
; compare current lock input with current PID
cmp ebx, eax
jne @f
/kernel/trunk/video/blitter.inc
316,7 → 316,7
 
lea edi, [edi+ebx*4]
 
mov ebx, [CURRENT_TASK]
mov ebx, [current_slot_idx]
; check for hardware cursor
cmp [_display.select_cursor], select_cursor
je .core_32.software_cursor
410,7 → 410,7
 
lea ebx, [ebx+ebx*2]
lea edi, [LFB_BASE+edi+ebx]
mov ebx, [CURRENT_TASK]
mov ebx, [current_slot_idx]
 
align 4
.outer24:
475,7 → 475,7
 
.core_16:
lea edi, [LFB_BASE+edi+ebx*2]
mov ebx, [CURRENT_TASK]
mov ebx, [current_slot_idx]
 
.outer16:
mov [esp+.extra_var1], edi
/kernel/trunk/video/cursors.inc
422,9 → 422,9
push esi
push edi
 
mov eax, [CURRENT_TASK]
mov eax, [current_slot_idx]
shl eax, 5
mov eax, [CURRENT_TASK+eax+4]
mov eax, [TASK_TABLE+eax+4]
mov ebx, [src]
mov ecx, [flags]
call create_cursor ;eax, ebx, ecx
459,9 → 459,9
cmp [esi+CURSOR.magic], 'CURS'
jne .fail
 
mov ebx, [CURRENT_TASK]
mov ebx, [current_slot_idx]
shl ebx, 5
mov ebx, [CURRENT_TASK+ebx+4]
mov ebx, [TASK_TABLE+ebx+4]
cmp ebx, [esi+CURSOR.pid]
jne .fail
 
/kernel/trunk/video/vesa20.inc
272,7 → 272,7
mov [putimg.real_sy_and_abs_cy], ecx
 
; get process number
mov ebx, [CURRENT_TASK]
mov ebx, [current_slot_idx]
 
cmp byte [_display.bits_per_pixel], 16
je put_image_end_16
886,7 → 886,7
mov edx, [d_width_calc_area + ebx*4]
add edx, [_display.win_map]
movzx edx, byte [eax+edx]
cmp edx, [CURRENT_TASK]
cmp edx, [current_slot_idx]
jne .exit
 
.forced:
1477,7 → 1477,7
add edx, LFB_BASE
 
; get process number
mov ebx, [CURRENT_TASK] ; bl - process num
mov ebx, [current_slot_idx] ; bl - process num
mov esi, [drbar.real_sy]
mov eax, [drbar.color] ; BBGGRR00
rol eax, 8