delete TASKDATA
git-svn-id: svn://kolibrios.org@9709 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -46,10 +46,10 @@ get_debuggee_slot:
|
||||
call pid_to_slot
|
||||
test eax, eax
|
||||
jz .ret_bad
|
||||
shl eax, 5
|
||||
shl eax, BSF sizeof.APPDATA
|
||||
push ebx
|
||||
mov ebx, [current_slot_idx]
|
||||
cmp [SLOT_BASE+eax*8+APPDATA.debugger_slot], ebx
|
||||
cmp [SLOT_BASE+eax+APPDATA.debugger_slot], ebx
|
||||
pop ebx
|
||||
jnz .ret_bad
|
||||
; clc ; automatically
|
||||
@@ -63,7 +63,7 @@ debug_detach:
|
||||
; destroys eax,ebx
|
||||
call get_debuggee_slot
|
||||
jc .ret
|
||||
and dword [eax*8+SLOT_BASE+APPDATA.debugger_slot], 0
|
||||
and dword [eax+SLOT_BASE+APPDATA.debugger_slot], 0
|
||||
call do_resume
|
||||
.ret:
|
||||
sti
|
||||
@@ -74,7 +74,7 @@ debug_terminate:
|
||||
call get_debuggee_slot
|
||||
jc debug_detach.ret
|
||||
mov ecx, eax
|
||||
shr ecx, 5
|
||||
shr ecx, BSF sizeof.APPDATA
|
||||
; push 2
|
||||
; pop ebx
|
||||
mov edx, esi
|
||||
@@ -92,14 +92,14 @@ debug_suspend:
|
||||
call get_debuggee_slot
|
||||
jc .ret
|
||||
; } End patch
|
||||
mov cl, [TASK_TABLE+eax+TASKDATA.state] ; process state
|
||||
mov cl, [SLOT_BASE + eax + APPDATA.state] ; process state
|
||||
test cl, cl
|
||||
jz .1
|
||||
cmp cl, 5
|
||||
jnz .ret
|
||||
mov cl, 2
|
||||
.2:
|
||||
mov [TASK_TABLE+eax+TASKDATA.state], cl
|
||||
mov [SLOT_BASE + eax + APPDATA.state], cl
|
||||
.ret:
|
||||
sti
|
||||
ret
|
||||
@@ -108,14 +108,14 @@ debug_suspend:
|
||||
jmp .2
|
||||
|
||||
do_resume:
|
||||
mov cl, [TASK_TABLE+eax+TASKDATA.state]
|
||||
mov cl, [SLOT_BASE + eax + APPDATA.state]
|
||||
cmp cl, 1
|
||||
jz .1
|
||||
cmp cl, 2
|
||||
jnz .ret
|
||||
mov cl, 5
|
||||
.2:
|
||||
mov [TASK_TABLE+eax+TASKDATA.state], cl
|
||||
mov [SLOT_BASE + eax + APPDATA.state], cl
|
||||
.ret:
|
||||
ret
|
||||
.1:
|
||||
@@ -128,7 +128,7 @@ debug_resume:
|
||||
cli
|
||||
mov eax, ecx
|
||||
call pid_to_slot
|
||||
shl eax, 5
|
||||
shl eax, BSF sizeof.APPDATA
|
||||
jz .ret
|
||||
call do_resume
|
||||
.ret:
|
||||
@@ -155,12 +155,12 @@ debug_getcontext:
|
||||
call get_debuggee_slot
|
||||
jc .ret
|
||||
|
||||
shr eax, 5
|
||||
shr eax, 8
|
||||
cmp eax, [fpu_owner]
|
||||
jne @f
|
||||
inc bh ; set swap context flag
|
||||
@@:
|
||||
shl eax, 8
|
||||
shl eax, BSF sizeof.APPDATA
|
||||
mov edi, esi
|
||||
mov eax, [eax+SLOT_BASE+APPDATA.pl0_stack]
|
||||
lea esi, [eax+RING0_STACK_SIZE]
|
||||
@@ -231,7 +231,7 @@ debug_setcontext:
|
||||
call get_debuggee_slot
|
||||
jc .stiret
|
||||
; mov esi, edx
|
||||
mov eax, [eax*8+SLOT_BASE+APPDATA.pl0_stack]
|
||||
mov eax, [eax+SLOT_BASE+APPDATA.pl0_stack]
|
||||
lea edi, [eax+RING0_STACK_SIZE]
|
||||
|
||||
.ring0:
|
||||
@@ -267,7 +267,7 @@ debug_set_drx:
|
||||
call get_debuggee_slot
|
||||
jc .errret
|
||||
mov ebp, eax
|
||||
lea eax, [eax*8+SLOT_BASE+APPDATA.dbg_regs]
|
||||
lea eax, [eax+SLOT_BASE+APPDATA.dbg_regs]
|
||||
; [eax]=dr0, [eax+4]=dr1, [eax+8]=dr2, [eax+C]=dr3
|
||||
; [eax+10]=dr7
|
||||
cmp esi, OS_BASE
|
||||
@@ -294,7 +294,7 @@ debug_set_drx:
|
||||
jnz .okret
|
||||
; imul eax, ebp, tss_step/32
|
||||
; and byte [eax + tss_data + TSS._trap], not 1
|
||||
and [ebp*8 + SLOT_BASE+APPDATA.dbg_state], not 1
|
||||
and [ebp + SLOT_BASE+APPDATA.dbg_state], not 1
|
||||
.okret:
|
||||
and dword [esp+32], 0
|
||||
sti
|
||||
@@ -341,7 +341,7 @@ debug_set_drx:
|
||||
or [eax+10h+2], dx ; set R/W and LEN fields
|
||||
; imul eax, ebp, tss_step/32
|
||||
; or byte [eax + tss_data + TSS._trap], 1
|
||||
or [ebp*8 + SLOT_BASE+APPDATA.dbg_state], 1
|
||||
or [ebp + SLOT_BASE+APPDATA.dbg_state], 1
|
||||
jmp .okret
|
||||
|
||||
debug_read_process_memory:
|
||||
@@ -354,7 +354,7 @@ debug_read_process_memory:
|
||||
; destroys all
|
||||
call get_debuggee_slot
|
||||
jc .err
|
||||
shr eax, 5
|
||||
shr eax, 8
|
||||
mov ecx, edi
|
||||
call read_process_memory
|
||||
sti
|
||||
@@ -374,7 +374,7 @@ debug_write_process_memory:
|
||||
; destroys all
|
||||
call get_debuggee_slot
|
||||
jc debug_read_process_memory.err
|
||||
shr eax, 5
|
||||
shr eax, 8
|
||||
mov ecx, edi
|
||||
call write_process_memory
|
||||
sti
|
||||
|
@@ -280,7 +280,6 @@ proc find_next_task
|
||||
test bl, bl
|
||||
jz .start
|
||||
mov ebx, [current_slot]
|
||||
mov edi, [TASK_BASE]
|
||||
mov eax, [ebx+APPDATA.priority]
|
||||
test eax, eax
|
||||
jz .unlock_found
|
||||
@@ -293,11 +292,7 @@ proc find_next_task
|
||||
jz .priority_next
|
||||
.task_loop:
|
||||
mov ebx, [ebx+APPDATA.in_schedule.next]
|
||||
;mov al, [ebx+APPDATA.state]
|
||||
mov edi, ebx ;
|
||||
shr edi, 3 ;
|
||||
add edi, TASK_TABLE - (SLOT_BASE shr 3) ; on delete
|
||||
mov al, [edi+TASKDATA.state] ;
|
||||
mov al, [ebx+APPDATA.state]
|
||||
test al, al
|
||||
jz .task_found ; state == 0
|
||||
cmp al, 5
|
||||
@@ -317,7 +312,6 @@ proc find_next_task
|
||||
xor eax, eax
|
||||
@@:
|
||||
mov [ebx+APPDATA.wait_param], eax ; retval for wait
|
||||
mov [edi+TASKDATA.state], TSTATE_RUNNING ; on delete
|
||||
mov [ebx+APPDATA.state], TSTATE_RUNNING
|
||||
.task_found:
|
||||
mov [scheduler_current+ecx*4], ebx
|
||||
@@ -338,7 +332,7 @@ proc find_next_task
|
||||
; the line below assumes APPDATA is 256 bytes long and SLOT_BASE is
|
||||
; aligned on 0x10000
|
||||
mov byte [current_slot_idx], bh
|
||||
mov [TASK_BASE], edi
|
||||
|
||||
rdtsc ;call _rdtsc
|
||||
mov [ebx-sizeof.APPDATA+APPDATA.counter_add], eax; for next using update_counters
|
||||
;mov [edi+TASKDATA.counter_add], eax; for next using update_counters
|
||||
@@ -352,7 +346,6 @@ proc find_next_task
|
||||
cmp ecx, [esp]
|
||||
jb .priority_loop
|
||||
mov ebx, [current_slot]
|
||||
mov edi, [TASK_BASE]
|
||||
jmp .unlock_found
|
||||
endp
|
||||
|
||||
|
@@ -38,7 +38,7 @@ mutex_lock:
|
||||
|
||||
list_add_tail esp, ecx ;esp= new waiter, ecx= list head
|
||||
|
||||
mov edx, [TASK_BASE]
|
||||
mov edx, [current_slot]
|
||||
mov [esp+MUTEX_WAITER.task], edx
|
||||
|
||||
.forever:
|
||||
@@ -48,7 +48,7 @@ mutex_lock:
|
||||
dec eax
|
||||
jz @F
|
||||
|
||||
mov [edx+TASKDATA.state], TSTATE_RUN_SUSPENDED
|
||||
mov [edx + APPDATA.state], TSTATE_RUN_SUSPENDED
|
||||
call change_task
|
||||
jmp .forever
|
||||
@@:
|
||||
@@ -80,7 +80,7 @@ mutex_unlock:
|
||||
je @F
|
||||
|
||||
mov eax, [eax+MUTEX_WAITER.task]
|
||||
mov [eax+TASKDATA.state], TSTATE_RUNNING
|
||||
mov [eax + APPDATA.state], TSTATE_RUNNING
|
||||
@@:
|
||||
popfd
|
||||
ret
|
||||
@@ -111,10 +111,10 @@ down_read:
|
||||
@@:
|
||||
sub esp, sizeof.MUTEX_WAITER
|
||||
|
||||
mov eax, [TASK_BASE]
|
||||
mov eax, [current_slot]
|
||||
mov [esp+MUTEX_WAITER.task], eax
|
||||
mov [esp+MUTEX_WAITER.type], RWSEM_WAITING_FOR_READ
|
||||
mov [eax+TASKDATA.state], TSTATE_RUN_SUSPENDED
|
||||
mov [eax + APPDATA.state], TSTATE_RUN_SUSPENDED
|
||||
|
||||
list_add_tail esp, ecx ;esp= new waiter, ecx= list head
|
||||
|
||||
@@ -138,10 +138,10 @@ down_write:
|
||||
cli
|
||||
sub esp, sizeof.MUTEX_WAITER
|
||||
|
||||
mov edx, [TASK_BASE]
|
||||
mov edx, [current_slot]
|
||||
mov [esp+MUTEX_WAITER.task], edx
|
||||
mov [esp+MUTEX_WAITER.type], RWSEM_WAITING_FOR_WRITE
|
||||
mov [edx+TASKDATA.state], TSTATE_RUN_SUSPENDED
|
||||
mov [edx + APPDATA.state], TSTATE_RUN_SUSPENDED
|
||||
|
||||
list_add_tail esp, ecx ;esp= new waiter, ecx= list head
|
||||
|
||||
@@ -152,7 +152,7 @@ down_write:
|
||||
test eax, [ecx+RWSEM.count]
|
||||
jz @F
|
||||
|
||||
mov [edx+TASKDATA.state], TSTATE_RUN_SUSPENDED
|
||||
mov [edx + APPDATA.state], TSTATE_RUN_SUSPENDED
|
||||
call change_task
|
||||
jmp .forever
|
||||
@@:
|
||||
@@ -178,7 +178,7 @@ up_read:
|
||||
je @F
|
||||
|
||||
mov eax, [eax+MUTEX_WAITER.task]
|
||||
mov [eax+TASKDATA.state], TSTATE_RUNNING
|
||||
mov [eax + APPDATA.state], TSTATE_RUNNING
|
||||
@@:
|
||||
popfd
|
||||
ret
|
||||
@@ -202,7 +202,7 @@ up_write:
|
||||
jnz .wake
|
||||
|
||||
mov eax, [eax+MUTEX_WAITER.task]
|
||||
mov [eax+TASKDATA.state], TSTATE_RUNNING
|
||||
mov [eax + APPDATA.state], TSTATE_RUNNING
|
||||
.done:
|
||||
popfd
|
||||
ret
|
||||
@@ -220,7 +220,7 @@ up_write:
|
||||
mov ebx, [eax+MUTEX_WAITER.list.next]
|
||||
list_del eax
|
||||
mov edx, [eax+MUTEX_WAITER.task]
|
||||
mov [edx+TASKDATA.state], TSTATE_RUNNING
|
||||
mov [edx + APPDATA.state], TSTATE_RUNNING
|
||||
inc esi
|
||||
cmp edi, ebx
|
||||
je .wake_done
|
||||
|
@@ -150,9 +150,9 @@ exc_c: ; exceptions (all but 7th - #NM)
|
||||
test eax, eax
|
||||
jnz .debug
|
||||
; not debuggee => say error and terminate
|
||||
call show_error_parameters
|
||||
call show_error_parameters ; this function output in edx = current_slot
|
||||
sti
|
||||
mov [edx + TASKDATA.state], TSTATE_TERMINATING
|
||||
mov [edx + APPDATA.state], TSTATE_TERMINATING
|
||||
call wakeup_osloop
|
||||
call change_task
|
||||
; If we're here, then the main OS thread has crashed before initializing IDLE thread.
|
||||
@@ -186,8 +186,8 @@ exc_c: ; exceptions (all but 7th - #NM)
|
||||
mov cl, 12 ; debug_message size
|
||||
call debugger_notify ;; only ONE using, inline ??? SEE: core/debug.inc
|
||||
add esp, 12
|
||||
mov edx, [TASK_BASE]
|
||||
mov [edx+TASKDATA.state], TSTATE_RUN_SUSPENDED
|
||||
mov edx, [current_slot]
|
||||
mov [edx + APPDATA.state], TSTATE_RUN_SUSPENDED
|
||||
call change_task ; SEE: core/shed.inc
|
||||
restore_ring3_context
|
||||
iretd
|
||||
@@ -288,6 +288,27 @@ show_error_parameters:
|
||||
test eax, eax
|
||||
jnz .error_ESP
|
||||
DEBUGF 1, " [ESP+32]: %x\n",[ebx]
|
||||
;for input instruction
|
||||
mov ebx, [reg_eip+4]
|
||||
call .check_ESP
|
||||
test eax, eax
|
||||
jnz .error_ESP
|
||||
DEBUGF 1, "K : [EIP]: %x",[ebx]
|
||||
add ebx, 4
|
||||
call .check_ESP
|
||||
test eax, eax
|
||||
jnz .error_ESP
|
||||
DEBUGF 1, " [EIP+4]: %x",[ebx]
|
||||
add ebx, 4
|
||||
call .check_ESP
|
||||
test eax, eax
|
||||
jnz .error_ESP
|
||||
DEBUGF 1, " [EIP+8]: %x\n",[ebx]
|
||||
add ebx, 4
|
||||
call .check_ESP
|
||||
test eax, eax
|
||||
jnz .error_ESP
|
||||
DEBUGF 1, "K : [EIP+12]: %x\n",[ebx]
|
||||
pop edx ecx ebx eax
|
||||
ret
|
||||
.error_ESP:
|
||||
@@ -412,13 +433,12 @@ destroy_thread:
|
||||
|
||||
push esi ;save .slot
|
||||
|
||||
shl esi, 8
|
||||
shl esi, BSF sizeof.APPDATA
|
||||
mov edx, [SLOT_BASE+esi+APPDATA.process]
|
||||
test edx, edx
|
||||
jnz @F
|
||||
mov [SLOT_BASE + esi + APPDATA.state], TSTATE_FREE
|
||||
pop esi
|
||||
shl esi, BSF sizeof.TASKDATA
|
||||
mov [TASK_TABLE+esi+TASKDATA.state], TSTATE_FREE
|
||||
ret
|
||||
@@:
|
||||
push edx ;save .process
|
||||
@@ -428,7 +448,7 @@ destroy_thread:
|
||||
|
||||
; if the process is in V86 mode...
|
||||
mov eax, [.slot]
|
||||
shl eax, 8
|
||||
shl eax, BSF sizeof.APPDATA
|
||||
mov esi, [eax+SLOT_BASE+APPDATA.pl0_stack]
|
||||
add esi, RING0_STACK_SIZE
|
||||
cmp [eax+SLOT_BASE+APPDATA.saved_esp0], esi
|
||||
@@ -445,7 +465,7 @@ destroy_thread:
|
||||
.nov86:
|
||||
; destroy per-thread kernel objects
|
||||
mov esi, [.slot]
|
||||
shl esi, 8
|
||||
shl esi, BSF sizeof.APPDATA
|
||||
add esi, SLOT_BASE+APP_OBJ_OFFSET
|
||||
@@:
|
||||
mov eax, [esi+APPOBJ.fd]
|
||||
@@ -591,7 +611,7 @@ destroy_thread:
|
||||
popad
|
||||
|
||||
mov ebx, [.slot]
|
||||
shl ebx, 8
|
||||
shl ebx, BSF sizeof.APPDATA
|
||||
push ebx
|
||||
mov ebx, [SLOT_BASE+ebx+APPDATA.pl0_stack]
|
||||
|
||||
@@ -602,7 +622,7 @@ destroy_thread:
|
||||
stdcall kernel_free, ebx
|
||||
|
||||
mov edi, [.slot]
|
||||
shl edi, 8
|
||||
shl edi, BSF sizeof.APPDATA
|
||||
add edi, SLOT_BASE
|
||||
|
||||
mov eax, [edi+APPDATA.io_map]
|
||||
@@ -637,9 +657,10 @@ destroy_thread:
|
||||
jbe .nothing_to_activate
|
||||
lea esi, [WIN_POS+eax*2]
|
||||
movzx edi, word [esi] ; edi = process
|
||||
shl edi, BSF sizeof.TASKDATA
|
||||
cmp [TASK_TABLE + edi + TASKDATA.state], TSTATE_FREE ; skip free slots
|
||||
shl edi, BSF sizeof.APPDATA
|
||||
cmp [SLOT_BASE + edi + APPDATA.state], TSTATE_FREE ; skip free slots
|
||||
je .check_next_window
|
||||
shr edi, 3
|
||||
add edi, window_data
|
||||
; \begin{diamond}[19.09.2006]
|
||||
; skip minimized windows
|
||||
@@ -711,8 +732,8 @@ destroy_thread:
|
||||
|
||||
popa
|
||||
mov edi, esi ; do not run this process slot
|
||||
shl edi, BSF sizeof.TASKDATA
|
||||
mov [edi+TASK_TABLE + TASKDATA.state], TSTATE_FREE
|
||||
shl edi, BSF sizeof.APPDATA
|
||||
mov [edi + SLOT_BASE + APPDATA.state], TSTATE_FREE
|
||||
; debugger test - terminate all debuggees
|
||||
mov eax, 2
|
||||
mov ecx, SLOT_BASE+2*sizeof.APPDATA + APPDATA.debugger_slot
|
||||
|
@@ -487,26 +487,22 @@ pid_to_slot:
|
||||
push ebx
|
||||
push ecx
|
||||
mov ebx, [thread_count]
|
||||
shl ebx, BSF sizeof.TASKDATA ; multiply by size
|
||||
;shl ebx, BSF sizeof.APPDATA ; multiply by size
|
||||
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
|
||||
;mov ecx, 2*32 ;sizeof.TASKDATA
|
||||
mov ecx, sizeof.APPDATA
|
||||
|
||||
.loop:
|
||||
;ecx = offset of current process info entry
|
||||
;ebx = maximum permitted offset
|
||||
cmp [TASK_TABLE+ecx+TASKDATA.state], TSTATE_FREE
|
||||
cmp [SLOT_BASE + ecx + APPDATA.state], TSTATE_FREE
|
||||
jz .endloop ;skip empty slots
|
||||
;cmp [ecx+SLOT_BASE+APPDATA.state], TSTATE_FREE
|
||||
;jz .endloop ;skip empty slots
|
||||
cmp [ecx*8 + SLOT_BASE + APPDATA.tid], eax;check PID
|
||||
cmp [ecx + SLOT_BASE + APPDATA.tid], eax;check PID
|
||||
jz .pid_found
|
||||
.endloop:
|
||||
add ecx, sizeof.TASKDATA
|
||||
;add ecx, sizeof.APPDATA
|
||||
add ecx, sizeof.APPDATA
|
||||
cmp ecx, ebx
|
||||
jle .loop
|
||||
|
||||
@@ -516,8 +512,7 @@ pid_to_slot:
|
||||
ret
|
||||
|
||||
.pid_found:
|
||||
shr ecx, BSF sizeof.TASKDATA ; divide by size
|
||||
;shr ecx, BSF sizeof.APPDATA
|
||||
shr ecx, BSF sizeof.APPDATA ; divide by size
|
||||
mov eax, ecx ;convert offset to index of slot
|
||||
pop ecx
|
||||
pop ebx
|
||||
@@ -903,8 +898,7 @@ common_app_entry:
|
||||
cmp [ebx+APPDATA.debugger_slot], 0
|
||||
je .exit
|
||||
mov [ebx+APPDATA.state], TSTATE_RUN_SUSPENDED
|
||||
mov eax, [TASK_BASE]
|
||||
mov [eax+TASKDATA.state], TSTATE_RUN_SUSPENDED
|
||||
mov [ebx + APPDATA.state], TSTATE_RUN_SUSPENDED
|
||||
call change_task
|
||||
.exit:
|
||||
popad
|
||||
@@ -932,7 +926,7 @@ proc set_app_params stdcall,slot:dword, params:dword, flags:dword
|
||||
mov eax, [slot]
|
||||
mov ebx, eax
|
||||
|
||||
shl eax, 8
|
||||
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
|
||||
@@ -952,7 +946,7 @@ proc set_app_params stdcall,slot:dword, params:dword, flags:dword
|
||||
|
||||
cmp [thread_count], ebx
|
||||
adc [thread_count], 0 ; update number of processes
|
||||
shl ebx, 8
|
||||
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
|
||||
@@ -987,7 +981,7 @@ proc set_app_params stdcall,slot:dword, params:dword, flags:dword
|
||||
mov eax, [slot]
|
||||
mov [ebx+SLOT_BASE+APPDATA.wnd_number], al
|
||||
mov ebx, eax
|
||||
shl ebx, 5
|
||||
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
|
||||
@@ -1037,20 +1031,18 @@ proc set_app_params stdcall,slot:dword, params:dword, flags:dword
|
||||
|
||||
lea edx, [ebx+REG_RET]
|
||||
mov ebx, [slot]
|
||||
shl ebx, 5
|
||||
mov [ebx*8+SLOT_BASE+APPDATA.saved_esp], edx
|
||||
shl ebx, BSF sizeof.APPDATA
|
||||
mov [ebx+SLOT_BASE+APPDATA.saved_esp], edx
|
||||
|
||||
xor edx, edx; process state - running
|
||||
; set if debuggee
|
||||
test byte [flags], 1
|
||||
jz .no_debug
|
||||
mov eax, [current_slot_idx]
|
||||
mov [SLOT_BASE+ebx*8+APPDATA.debugger_slot], eax
|
||||
mov [SLOT_BASE+ebx+APPDATA.debugger_slot], eax
|
||||
.no_debug:
|
||||
mov [TASK_TABLE+ebx+TASKDATA.state], dl
|
||||
;shl ebx, 3
|
||||
;mov [ebx+SLOT_BASE+APPDATA.state], dl
|
||||
lea edx, [SLOT_BASE+ebx*8]
|
||||
mov [SLOT_BASE + ebx + APPDATA.state], dl
|
||||
lea edx, [SLOT_BASE+ebx]
|
||||
call scheduler_add_thread
|
||||
ret
|
||||
endp
|
||||
|
@@ -898,9 +898,6 @@ v86_irq2:
|
||||
mov word [esi-sizeof.v86_regs+v86_regs.cs], cx
|
||||
and byte [esi-sizeof.v86_regs+v86_regs.eflags+1], not 3
|
||||
call update_counters
|
||||
lea edi, [ebx + 0x100000000 - SLOT_BASE]
|
||||
shr edi, 3
|
||||
add edi, TASK_TABLE
|
||||
call find_next_task.found
|
||||
call do_change_task
|
||||
popad
|
||||
|
Reference in New Issue
Block a user