Macros | |
| #define | lodsReg(reg) |
Functions | |
| void | scheduler_add_thread () |
| Add the given thread to the given priority list for the scheduler. in: edx -> APPDATA, ecx = priority. More... | |
| void | scheduler_remove_thread () |
| Remove the given thread from the corresponding priority list for the scheduler. in: edx -> APPDATA. More... | |
| void | find_next_task () |
| info: Find next task to execute in: bl = SCHEDULE_ANY_PRIORITY: consider threads with any priority bl = SCHEDULE_HIGHER_PRIORITY: consider only threads with strictly higher priority than the current one, keep running the current thread if other ready threads have the same or lower priority retval: ebx = address of the APPDATA for the selected task (slot-base) ZF = 1 if the task is the same warning: [current_slot_idx] = bh – as result [current_slot] is not set to new value (ebx)!!! scratched: eax,ecx More... | |
Variables | |
| label | irq0 |
| label | change_task |
| dd | context_counter |
| far_jump: .offs dd ? .sel dw ? noname & halyavin More... | |
| dd | next_usage_update |
| dd | timer_ticks |
| label | update_counters |
| label | updatecputimes |
| label | do_change_task |
| ax | Mov |
| set gs selector unconditionally More... | |
| rd | scheduler_current |
| [scheduler_current + i*4] = zero if there are no threads with priority i, pointer to APPDATA of the current thread with priority i otherwise. More... | |
| TIMER | struc |
| dd | _next |
| dd | _exp_time |
| dd | _func |
| dd | _arg |
| rd | rdy_head |
| label | pick_task |
| label | shed |
| param eax= task More... | |
| label | enqueue |
| param eax= task More... | |
| #define lodsReg | ( | reg | ) |
| void find_next_task | ( | ) |
info: Find next task to execute in: bl = SCHEDULE_ANY_PRIORITY: consider threads with any priority bl = SCHEDULE_HIGHER_PRIORITY: consider only threads with strictly higher priority than the current one, keep running the current thread if other ready threads have the same or lower priority retval: ebx = address of the APPDATA for the selected task (slot-base) ZF = 1 if the task is the same warning: [current_slot_idx] = bh – as result [current_slot] is not set to new value (ebx)!!! scratched: eax,ecx
| void scheduler_add_thread | ( | ) |
Add the given thread to the given priority list for the scheduler. in: edx -> APPDATA, ecx = priority.
| void scheduler_remove_thread | ( | ) |
Remove the given thread from the corresponding priority list for the scheduler. in: edx -> APPDATA.
| dd _arg |
| dd _exp_time |
| dd _func |
| dd _next |
| label change_task |
| dd context_counter |
| label do_change_task |
| label enqueue |
param eax= task
| label irq0 |
| gs Mov |
set gs selector unconditionally
| dd next_usage_update |
| label pick_task |
| rd rdy_head |
| rd scheduler_current |
[scheduler_current + i*4] = zero if there are no threads with priority i, pointer to APPDATA of the current thread with priority i otherwise.
| label shed |
| TIMER struc |
| dd timer_ticks |
| label update_counters |
| label updatecputimes |