Brief primer: The Freya environment supports up to three processes (not multi-tasked, rather in a kind of cooperative execution stack) : - the first process (SRAM bank 3) is typically the shell, - the second process (SRAM bank 2) is typically the program being executed from the shell, - the third process (SRAM bank 1) can be executed on top, but *I think* cannot be suspended. There are two suspend slots, which allows one process to exist in IRAM, and two processes to exist outside of IRAM. To make this work correctly, there's a bunch of sub-tasks that have to be done: - [ ] Clean up the `sys_suspend`/`sys_resume` implementation - it's very proof of concept. - [ ] Implement `sys_swap`. - [x] Figure out how `sys_set_resume`/`sys_get_resume` relate to `sys_suspend`/`sys_resume`, and implement it in AthenaBIOS. - [ ] Based on this information, implement the relevant process management functions in Proc.
Brief primer:
The Freya environment supports up to three processes (not multi-tasked, rather in a kind of cooperative execution stack) :
There are two suspend slots, which allows one process to exist in IRAM, and two processes to exist outside of IRAM.
To make this work correctly, there's a bunch of sub-tasks that have to be done:
sys_suspend/sys_resumeimplementation - it's very proof of concept.sys_swap.sys_set_resume/sys_get_resumerelate tosys_suspend/sys_resume, and implement it in AthenaBIOS.