67,11 → 67,11 |
jne .find_next_task |
mov [dma_task_switched], 0 |
mov ebx, [dma_process] |
cmp [0x3000], ebx |
cmp [CURRENT_TASK], ebx |
je .return |
mov edi, [dma_slot_ptr] |
mov [0x3000], ebx |
mov [0x3010], edi |
mov [CURRENT_TASK], ebx |
mov [TASK_BASE], edi |
jmp @f |
.find_next_task: |
; \end{Mario79} |
103,7 → 103,7 |
|
|
update_counters: |
mov edi, [0x3010] |
mov edi, [TASK_BASE] |
mov ebx, [edi+TASKDATA.counter_add] ; time stamp counter add |
call _rdtsc |
sub eax, ebx |
119,8 → 119,8 |
; [0x3000] = ebx and [0x3010] = edi |
; corrupts other regs |
find_next_task: |
mov ebx, [0x3000] |
mov edi, [0x3010] |
mov ebx, [CURRENT_TASK] |
mov edi, [TASK_BASE] |
mov [prev_slot], ebx |
|
.waiting_for_termination: |
127,9 → 127,9 |
.waiting_for_reuse: |
.waiting_for_event: |
.suspended: |
cmp ebx, [0x3004] |
cmp ebx, [TASK_COUNT] |
jb @f |
mov edi, 0x3000 |
mov edi, CURRENT_TASK |
xor ebx, ebx |
@@: |
|
150,8 → 150,8 |
cmp al, 9 |
je .waiting_for_reuse |
|
mov [0x3000],ebx |
mov [0x3010],edi |
mov [CURRENT_TASK],ebx |
mov [TASK_BASE],edi |
|
cmp al, 5 |
jne .noevents |
162,8 → 162,8 |
mov [edi+TASKDATA.state], byte 0 |
.noevents: |
.found: |
mov [0x3000],ebx |
mov [0x3010],edi |
mov [CURRENT_TASK],ebx |
mov [TASK_BASE],edi |
call _rdtsc |
mov [edi+TASKDATA.counter_add],eax |
|
191,8 → 191,8 |
mov eax,[idleuse] |
mov [idleusesec],eax |
mov [idleuse],dword 0 |
mov ecx, [0x3004] |
mov edi, 0x3020 |
mov ecx, [TASK_COUNT] |
mov edi, TASK_DATA |
.newupdate: |
mov ebx,[edi+TASKDATA.counter_sum] |
mov [edi+TASKDATA.cpu_usage],ebx |