/kernel/trunk/const.inc |
---|
479,6 → 479,8 |
height dd ? |
ends |
; Fields, marked as R now not used, but will be used soon, |
; when legacy TASKDATA structure will be deleted |
struct APPDATA |
app_name rb 11 |
rb 5 |
504,17 → 506,17 |
wait_test dd ? ;+96 +++ |
wait_param dd ? ;+100 +++ |
tls_base dd ? ;+104 |
event_mask dd ? ;+108 ; stores event types allowed for task |
tid dd ? ;+112 ; thread id |
event_mask dd ? ;+108 ; R stores event types allowed for task |
tid dd ? ;+112 ; R thread id |
draw_bgr_x dd ? ;+116 |
draw_bgr_y dd ? ;+120 |
state db ? ;+124 ; thread state |
state db ? ;+124 ; R thread state |
db ? ;+125 |
dw ? ;+126 |
wnd_shape dd ? ;+128 |
wnd_shape_scale dd ? ;+132 |
mem_start dd ? ;+136 ;; |
counter_sum dd ? ;+140 ;; |
mem_start dd ? ;+136 ; R |
counter_sum dd ? ;+140 ; R |
saved_box BOX ;+144 |
ipc_start dd ? ;+160 |
ipc_size dd ? ;+164 |
531,8 → 533,8 |
wnd_clientbox BOX ;+216 |
priority dd ? ;+232 |
in_schedule LHEAD ;+236 |
counter_add dd ? ;+244 ;; |
cpu_usage dd ? ;+248 ;; |
counter_add dd ? ;+244 ; R |
cpu_usage dd ? ;+248 ; R |
dd ? ;+252 |
ends |
557,6 → 559,7 |
cpu_usage dd ? ;+28 |
ends |
; Thread states: |
TSTATE_RUNNING = 0 |
TSTATE_RUN_SUSPENDED = 1 |
TSTATE_WAIT_SUSPENDED = 2 |
565,7 → 568,7 |
TSTATE_WAITING = 5 |
TSTATE_FREE = 9 |
; constants definition |
; Window constants: |
WSTATE_NORMAL = 00000000b |
WSTATE_MAXIMIZED = 00000001b |
WSTATE_MINIMIZED = 00000010b |
581,7 → 584,8 |
ZPOS_ALWAYS_BACK = -1 |
ZPOS_NORMAL = 0 |
ZPOS_ALWAYS_TOP = 1 ;ZPOS_ALWAYS_TOP is always last and has max number! |
; structures definition |
; Window structure: |
struct WDATA |
box BOX |
cl_workarea dd ? |
/kernel/trunk/core/memory.inc |
---|
1008,7 → 1008,7 |
mov dword [edi+4], ebx |
mov eax, [TASK_BASE] |
mov eax, [eax+0x04] ;eax - our PID |
mov eax, [eax+TASKDATA.pid] ;eax - our PID |
add edi, edx |
mov [edi], eax |
mov ecx, [msg_size] |
/kernel/trunk/core/sched.inc |
---|
309,7 → 309,7 |
xor eax, eax |
@@: |
mov [ebx+APPDATA.wait_param], eax ; retval for wait |
mov [edi+TASKDATA.state], 0 |
mov [edi+TASKDATA.state], TSTATE_RUNNING |
.task_found: |
mov [scheduler_current+ecx*4], ebx |
; If we have selected a thread with higher priority |
/kernel/trunk/core/sync.inc |
---|
48,7 → 48,7 |
dec eax |
jz @F |
mov [edx+TASKDATA.state], 1 |
mov [edx+TASKDATA.state], TSTATE_RUN_SUSPENDED |
call change_task |
jmp .forever |
@@: |
80,7 → 80,7 |
je @F |
mov eax, [eax+MUTEX_WAITER.task] |
mov [eax+TASKDATA.state], 0 |
mov [eax+TASKDATA.state], TSTATE_RUNNING |
@@: |
popfd |
ret |
114,7 → 114,7 |
mov eax, [TASK_BASE] |
mov [esp+MUTEX_WAITER.task], eax |
mov [esp+MUTEX_WAITER.type], RWSEM_WAITING_FOR_READ |
mov [eax+TASKDATA.state], 1 |
mov [eax+TASKDATA.state], TSTATE_RUN_SUSPENDED |
list_add_tail esp, ecx ;esp= new waiter, ecx= list head |
141,7 → 141,7 |
mov edx, [TASK_BASE] |
mov [esp+MUTEX_WAITER.task], edx |
mov [esp+MUTEX_WAITER.type], RWSEM_WAITING_FOR_WRITE |
mov [edx+TASKDATA.state], 1 |
mov [edx+TASKDATA.state], TSTATE_RUN_SUSPENDED |
list_add_tail esp, ecx ;esp= new waiter, ecx= list head |
152,7 → 152,7 |
test eax, [ecx+RWSEM.count] |
jz @F |
mov [edx+TASKDATA.state], 1 |
mov [edx+TASKDATA.state], TSTATE_RUN_SUSPENDED |
call change_task |
jmp .forever |
@@: |
178,7 → 178,7 |
je @F |
mov eax, [eax+MUTEX_WAITER.task] |
mov [eax+TASKDATA.state], 0 |
mov [eax+TASKDATA.state], TSTATE_RUNNING |
@@: |
popfd |
ret |
202,7 → 202,7 |
jnz .wake |
mov eax, [eax+MUTEX_WAITER.task] |
mov [eax+TASKDATA.state], 0 |
mov [eax+TASKDATA.state], TSTATE_RUNNING |
.done: |
popfd |
ret |
220,7 → 220,7 |
mov ebx, [eax+MUTEX_WAITER.list.next] |
list_del eax |
mov edx, [eax+MUTEX_WAITER.task] |
mov [edx+TASKDATA.state], 0 |
mov [edx+TASKDATA.state], TSTATE_RUNNING |
inc esi |
cmp edi, ebx |
je .wake_done |
/kernel/trunk/core/sys32.inc |
---|
152,7 → 152,7 |
; not debuggee => say error and terminate |
call show_error_parameters |
sti |
mov [edx + TASKDATA.state], byte 4 ; terminate |
mov [edx + TASKDATA.state], TSTATE_TERMINATING ; terminate |
call wakeup_osloop |
call change_task |
; If we're here, then the main OS thread has crashed before initializing IDLE thread. |
187,7 → 187,7 |
call debugger_notify ;; only ONE using, inline ??? SEE: core/debug.inc |
add esp, 12 |
mov edx, [TASK_BASE] |
mov byte [edx+TASKDATA.state], 1 ; suspended |
mov [edx+TASKDATA.state], TSTATE_RUN_SUSPENDED ; suspended |
call change_task ; SEE: core/shed.inc |
restore_ring3_context |
iretd |
419,7 → 419,7 |
jnz @F |
pop esi |
shl esi, BSF sizeof.TASKDATA |
mov [TASK_TABLE+esi+TASKDATA.state], 9 |
mov [TASK_TABLE+esi+TASKDATA.state], TSTATE_FREE |
ret |
@@: |
push edx ;save .process |
639,7 → 639,7 |
lea esi, [WIN_POS+eax*2] |
movzx edi, word [esi] ; edi = process |
shl edi, BSF sizeof.TASKDATA |
cmp [TASK_TABLE + edi + TASKDATA.state], byte 9 ; skip dead slots |
cmp [TASK_TABLE + edi + TASKDATA.state], TSTATE_FREE ; skip free slots |
je .check_next_window |
add edi, window_data |
; \begin{diamond}[19.09.2006] |
714,7 → 714,7 |
popa |
mov edi, esi ; do not run this process slot |
shl edi, BSF sizeof.TASKDATA |
mov [edi+TASK_TABLE + TASKDATA.state], byte 9 |
mov [edi+TASK_TABLE + TASKDATA.state], TSTATE_FREE |
; debugger test - terminate all debuggees |
mov eax, 2 |
mov ecx, SLOT_BASE+2*0x100+APPDATA.debugger_slot |
/kernel/trunk/core/taskman.inc |
---|
493,13 → 493,12 |
.loop: |
;ecx = offset of current process info entry |
;ebx = maximum permitted offset |
; state 9 means "not used" |
cmp byte [TASK_TABLE+ecx+TASKDATA.state], TSTATE_FREE |
cmp [TASK_TABLE+ecx+TASKDATA.state], TSTATE_FREE |
jz .endloop ;skip empty slots |
cmp [TASK_TABLE+ecx+TASKDATA.pid], eax;check PID |
jz .pid_found |
.endloop: |
add ecx, 32 |
add ecx, sizeof.TASKDATA |
cmp ecx, ebx |
jle .loop |
895,7 → 894,7 |
cmp [ebx+APPDATA.debugger_slot], 0 |
je .exit |
mov eax, [TASK_BASE] |
mov [eax+TASKDATA.state], 1 |
mov [eax+TASKDATA.state], TSTATE_RUN_SUSPENDED |
call change_task |
.exit: |
popad |
987,7 → 986,7 |
inc dword [process_number] |
mov eax, [process_number] |
mov [ebx+4], eax ;set PID |
mov [ebx+TASKDATA.pid], eax ;set PID |
;set draw data to full screen |
xor eax, eax |