159,6 → 159,7 |
call show_error_parameters ;; only ONE using, inline ??? |
;mov edx, [TASK_BASE] |
mov [edx + TASKDATA.state], byte 4 ; terminate |
call wakeup_osloop |
jmp change_task ; stack - here it does not matter at all, SEE: core/shed.inc |
.debug: |
; we are debugged process, notify debugger and suspend ourself |
261,8 → 262,10 |
|
|
align 4 |
set_application_table_status: |
push eax |
lock_application_table: |
push eax ecx edx |
mov ecx, application_table_mutex |
call mutex_lock |
|
mov eax, [CURRENT_TASK] |
shl eax, 5 |
269,29 → 272,22 |
add eax, CURRENT_TASK+TASKDATA.pid |
mov eax, [eax] |
|
mov [application_table_status], eax |
mov [application_table_owner], eax |
|
pop eax |
pop edx ecx eax |
|
ret |
|
align 4 |
clear_application_table_status: |
push eax |
unlock_application_table: |
push eax ecx edx |
|
mov eax, [CURRENT_TASK] |
shl eax, 5 |
add eax, CURRENT_TASK+TASKDATA.pid |
mov eax, [eax] |
mov [application_table_owner], 0 |
mov ecx, application_table_mutex |
call mutex_unlock |
|
cmp eax, [application_table_status] |
jne apptsl1 |
xor eax, eax |
mov [application_table_status], eax |
apptsl1: |
pop edx ecx eax |
|
pop eax |
|
ret |
|
; * eax = 64 - íîìåð ôóíêöèè |
338,17 → 334,11 |
mov [CURRENT_TASK+esi+TASKDATA.state], 9 |
ret |
@@: |
lea edx, [SLOT_BASE+esi] |
call scheduler_remove_thread |
;mov esi,process_terminating |
;call sys_msg_board_str |
@@: |
cli |
cmp [application_table_status], 0 |
je term9 |
sti |
call change_task |
jmp @b |
term9: |
call set_application_table_status |
call lock_application_table |
|
; if the process is in V86 mode... |
mov eax, [.slot] |
391,11 → 381,11 |
stdcall destroy_app_space, [SLOT_BASE+eax+APPDATA.dir_table], [SLOT_BASE+eax+APPDATA.dlls_list_ptr] |
|
mov esi, [.slot] |
cmp [fpu_owner], esi ; if user fpu last -> fpu user = 1 |
cmp [fpu_owner], esi ; if user fpu last -> fpu user = 2 |
jne @F |
|
mov [fpu_owner], 1 |
mov eax, [256+SLOT_BASE+APPDATA.fpu_state] |
mov [fpu_owner], 2 |
mov eax, [256*2+SLOT_BASE+APPDATA.fpu_state] |
clts |
bt [cpu_caps], CAPS_SSE |
jnc .no_SSE |
688,7 → 678,7 |
mov [MOUSE_BACKGROUND], byte 0; no mouse background |
mov [DONT_DRAW_MOUSE], byte 0; draw mouse |
|
and [application_table_status], 0 |
call unlock_application_table |
;mov esi,process_terminated |
;call sys_msg_board_str |
add esp, 4 |