187,7 → 187,6 |
loop .copy_process_name_loop |
.copy_process_name_done: |
|
|
mov ebx, cr3 |
mov [save_cr3], ebx |
|
218,7 → 217,7 |
|
; release only virtual space, not phisical memory |
|
stdcall free_kernel_space, [file_base] |
stdcall free_kernel_space, [file_base] ; |
lea eax, [hdr_cmdline] |
lea ebx, [cmdline] |
lea ecx, [filename] |
415,7 → 414,6 |
mov eax, edi |
call set_cr3 |
|
|
mov edx, [app_tabs] |
mov edi, master_tab |
@@: |
504,8 → 502,10 |
mov eax, [esi] |
test eax, 1 |
jz .next |
|
test eax, 1 shl 9 |
jnz .next ;skip shared pages |
|
call free_page |
.next: |
add esi, 4 |
530,9 → 530,11 |
shl ecx,5 |
cmp byte [CURRENT_TASK+ecx+0xa],9 ;if process running? |
jz @f ;skip empty slots |
|
shl ecx,3 |
cmp [SLOT_BASE+ecx+0xB8],ebx ;compare page directory addresses |
jnz @f |
|
inc edx ;thread found |
@@: |
inc eax |
858,6 → 860,7 |
.wait_lock: |
cmp [application_table_status],0 |
je .get_lock |
|
call change_task |
jmp .wait_lock |
|
930,6 → 933,7 |
.do_wait: |
cmp dword [ebx],0 |
je .get_lock |
|
call change_task |
jmp .do_wait |
.get_lock: |
937,6 → 941,7 |
xchg eax, [ebx] |
test eax, eax |
jnz .do_wait |
|
pop ebx |
pop eax |
ret |
1101,13 → 1106,12 |
; set if debuggee |
test byte [flags], 1 |
jz .no_debug |
|
inc ecx ; process state - suspended |
mov eax,[CURRENT_TASK] |
mov [SLOT_BASE+ebx*8+APPDATA.debugger_slot],eax |
.no_debug: |
mov [CURRENT_TASK+ebx+TASKDATA.state], cl |
;mov esi,new_process_running |
;call sys_msg_board_str ;output information about succefull startup |
DEBUGF 1,"%s",new_process_running |
ret |
endp |