159,7 → 159,6 |
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 |
262,10 → 261,8 |
|
|
align 4 |
lock_application_table: |
push eax ecx edx |
mov ecx, application_table_mutex |
call mutex_lock |
set_application_table_status: |
push eax |
|
mov eax, [CURRENT_TASK] |
shl eax, 5 |
272,22 → 269,29 |
add eax, CURRENT_TASK+TASKDATA.pid |
mov eax, [eax] |
|
mov [application_table_owner], eax |
mov [application_table_status], eax |
|
pop edx ecx eax |
pop eax |
|
ret |
|
align 4 |
unlock_application_table: |
push eax ecx edx |
clear_application_table_status: |
push eax |
|
mov [application_table_owner], 0 |
mov ecx, application_table_mutex |
call mutex_unlock |
mov eax, [CURRENT_TASK] |
shl eax, 5 |
add eax, CURRENT_TASK+TASKDATA.pid |
mov eax, [eax] |
|
pop edx ecx eax |
cmp eax, [application_table_status] |
jne apptsl1 |
xor eax, eax |
mov [application_table_status], eax |
apptsl1: |
|
pop eax |
|
ret |
|
; * eax = 64 - íîìåð ôóíêöèè |
334,11 → 338,17 |
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 |
call lock_application_table |
@@: |
cli |
cmp [application_table_status], 0 |
je term9 |
sti |
call change_task |
jmp @b |
term9: |
call set_application_table_status |
|
; if the process is in V86 mode... |
mov eax, [.slot] |
381,11 → 391,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 = 2 |
cmp [fpu_owner], esi ; if user fpu last -> fpu user = 1 |
jne @F |
|
mov [fpu_owner], 2 |
mov eax, [256*2+SLOT_BASE+APPDATA.fpu_state] |
mov [fpu_owner], 1 |
mov eax, [256+SLOT_BASE+APPDATA.fpu_state] |
clts |
bt [cpu_caps], CAPS_SSE |
jnc .no_SSE |
678,7 → 688,7 |
mov [MOUSE_BACKGROUND], byte 0; no mouse background |
mov [DONT_DRAW_MOUSE], byte 0; draw mouse |
|
call unlock_application_table |
and [application_table_status], 0 |
;mov esi,process_terminated |
;call sys_msg_board_str |
add esp, 4 |