1,6 → 1,6 |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;; ;; |
;; Copyright (C) KolibriOS team 2004-2021. All rights reserved. ;; |
;; Copyright (C) KolibriOS team 2004-2022. All rights reserved. ;; |
;; Distributed under terms of the GNU General Public License. ;; |
;; ;; |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
127,7 → 127,7 |
jz .err_0 |
|
mov [slot], eax |
shl eax, 8 |
shl eax, BSF sizeof.APPDATA |
lea edi, [SLOT_BASE+eax] |
mov [slot_base], edi |
; clean extended information about process |
488,10 → 488,7 |
push ecx |
mov ebx, [thread_count] |
shl ebx, BSF sizeof.APPDATA ; multiply by size |
; add 2*32 cause: |
; [TASK_TABLE; TASK_TABLE + 32) isnt a task actually |
; skip first process in the task table |
;mov ecx, 2*32 ;sizeof.TASKDATA |
mov ecx, sizeof.APPDATA |
|
.loop: |
499,7 → 496,7 |
;ebx = maximum permitted offset |
cmp [SLOT_BASE + ecx + APPDATA.state], TSTATE_FREE |
jz .endloop ;skip empty slots |
cmp [ecx + SLOT_BASE + APPDATA.tid], eax;check PID |
cmp [SLOT_BASE + ecx + APPDATA.tid], eax |
jz .pid_found |
.endloop: |
add ecx, sizeof.APPDATA |
698,7 → 695,7 |
mov ebx, esi ;ebx=esi - pointer to extended information about current thread |
|
mov edi, eax |
shl edi, 8 |
shl edi, BSF sizeof.APPDATA |
add edi, SLOT_BASE |
mov edx, edi ;edx=edi - pointer to extended infomation about new thread |
mov ecx, sizeof.APPDATA/4 |
927,16 → 924,16 |
mov ebx, eax |
|
shl eax, BSF sizeof.APPDATA |
mov [eax+SLOT_BASE+APPDATA.fpu_state], edi |
mov [eax+SLOT_BASE+APPDATA.exc_handler], 0 |
mov [eax+SLOT_BASE+APPDATA.except_mask], 0 |
mov [eax+SLOT_BASE+APPDATA.terminate_protection], 80000001h |
mov [SLOT_BASE + eax + APPDATA.fpu_state], edi |
mov [SLOT_BASE + eax + APPDATA.exc_handler], 0 |
mov [SLOT_BASE + eax + APPDATA.except_mask], 0 |
mov [SLOT_BASE + eax + APPDATA.terminate_protection], 80000001h |
|
;set default io permission map |
mov ecx, [SLOT_BASE+sizeof.APPDATA+APPDATA.io_map] |
mov [eax+SLOT_BASE+APPDATA.io_map], ecx |
mov [SLOT_BASE + eax + APPDATA.io_map], ecx |
mov ecx, [SLOT_BASE+sizeof.APPDATA+APPDATA.io_map+4] |
mov [eax+SLOT_BASE+APPDATA.io_map+4], ecx |
mov [SLOT_BASE + eax + APPDATA.io_map + 4], ecx |
|
mov esi, fpu_data |
mov ecx, [xsave_area_size] |
947,20 → 944,20 |
cmp [thread_count], ebx |
adc [thread_count], 0 ; update number of processes |
shl ebx, BSF sizeof.APPDATA |
lea edx, [ebx+SLOT_BASE+APP_EV_OFFSET] |
mov [SLOT_BASE+APPDATA.fd_ev+ebx], edx |
mov [SLOT_BASE+APPDATA.bk_ev+ebx], edx |
lea edx, [SLOT_BASE + ebx + APP_EV_OFFSET] |
mov [SLOT_BASE + ebx + APPDATA.fd_ev], edx |
mov [SLOT_BASE + ebx + APPDATA.bk_ev], edx |
|
add edx, APP_OBJ_OFFSET-APP_EV_OFFSET |
mov [SLOT_BASE+APPDATA.fd_obj+ebx], edx |
mov [SLOT_BASE+APPDATA.bk_obj+ebx], edx |
mov [SLOT_BASE + ebx + APPDATA.fd_obj], edx |
mov [SLOT_BASE + ebx + APPDATA.bk_obj], edx |
|
mov ecx, [def_cursor] |
mov [SLOT_BASE+APPDATA.cursor+ebx], ecx |
mov [SLOT_BASE + ebx + APPDATA.cursor], ecx |
mov eax, [pl0_stack] |
mov [SLOT_BASE+APPDATA.pl0_stack+ebx], eax |
mov [SLOT_BASE + ebx + APPDATA.pl0_stack], eax |
add eax, RING0_STACK_SIZE |
mov [SLOT_BASE+APPDATA.saved_esp0+ebx], eax |
mov [SLOT_BASE + ebx + APPDATA.saved_esp0], eax |
|
push ebx |
stdcall kernel_alloc, maxPathLength |
969,23 → 966,23 |
mov esi, [esi+APPDATA.cur_dir] |
mov ecx, maxPathLength/4 |
mov edi, eax |
mov [ebx+SLOT_BASE+APPDATA.cur_dir], eax |
mov [SLOT_BASE + ebx + APPDATA.cur_dir], eax |
rep movsd |
|
mov [ebx+SLOT_BASE+APPDATA.event_mask], dword 1+2+4;set default event flags (see 40 function) |
mov [SLOT_BASE + ebx + APPDATA.event_mask], dword 1+2+4;set default event flags (see 40 function) |
inc dword [process_number] |
mov eax, [process_number] |
mov [ebx+SLOT_BASE+APPDATA.tid], eax ;set TID |
mov [SLOT_BASE + ebx + APPDATA.tid], eax ;set TID |
|
mov eax, [slot] |
mov [ebx+SLOT_BASE+APPDATA.wnd_number], al |
mov [SLOT_BASE + ebx + APPDATA.wnd_number], al |
mov ebx, eax |
shl ebx, BSF sizeof.WDATA |
lea ecx, [draw_data+ebx];ecx - pointer to draw data |
|
; 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 |
mov [window_data + ebx + WDATA.fl_wstate], WSTATE_NORMAL |
mov [window_data + ebx + WDATA.fl_redraw], 1 |
|
;set draw data to full screen |
xor eax, eax |
1031,7 → 1028,7 |
lea edx, [ebx+REG_RET] |
mov ebx, [slot] |
shl ebx, BSF sizeof.APPDATA |
mov [ebx+SLOT_BASE+APPDATA.saved_esp], edx |
mov [SLOT_BASE + ebx + APPDATA.saved_esp], edx |
|
xor edx, edx; process state - running |
; set if debuggee |