[KERNEL] #3 Preparing to merge legacy TASKDATA into APPDATA:

- get rid of CURRENT_TASK
- to APPDATA added new fields which will be used instead of TASKDATA's
- other small fixes

git-svn-id: svn://kolibrios.org@8869 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Rustem Gimadutdinov (rgimad)
2021-06-17 09:41:16 +00:00
parent 41386908d7
commit 2359531a17
20 changed files with 143 additions and 137 deletions

View File

@@ -625,10 +625,10 @@ high_code:
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 @@ proc setup_os_slot
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 @@ draw_num_text:
; 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 @@ dd .loadCursorUni
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 @@ dd .loadCursorUni
.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 @@ sysfn_terminate: ; 18.2 = TERMINATE
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 @@ sysfn_zmodif:
cmp edx, -1
jne @f
mov edx, [CURRENT_TASK]
mov edx, [current_slot_idx]
@@:
cmp edx, [thread_count]
ja .fail
@@ -2363,7 +2363,7 @@ sysfn_zmodif:
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_zmodif:
;------------------------------------------------------------------------------
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
;--------------------------------------
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 @@ nosb6:
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 @@ align 4
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
;------------------------------------------------------------------------------
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 @@ sys_cpuusage:
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 @@ sys_cpuusage:
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 @@ sys_cpuusage:
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 @@ sys_cpuusage:
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 @@ sys_cpuusage:
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 @@ sys_redrawstat:
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 @@ sys_redrawstat:
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 @@ nocpustart:
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 @@ markz:
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 @@ sys_putimage_palette:
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 @@ sys_process_def:
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 @@ align 4
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 @@ align 4
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