Right now we're using cooperative task-switching. We need to change this over to use preemptive multitasking. I haven't yet been able to get it to behave but we need to get this finished soon.
I've been working like a madman trying to get this done over the last couple days. Some of it is working, some of it is not yet working. I will likely push an update with some of the new code today but it is more likely that I will wait until I have it all done.
There are still bugs in the task switcher so i decided to remove the possibility to call the task-switcher directly to keep things simple (the new proc_suspend function will simply call the interrupt hander).