This is the mega-ucontext commit. It replaces the task switching mechanism with a new one inspired by ucontext. It works under Linux, OS X and Windows, and is Valgrind clean on Linux and OS X (provided the runtime is built with gcc).
This commit also moves yield and join to the standard library, as requested in #42. Join is currently a no-op though.
This commit is contained in:
@@ -354,6 +354,16 @@ task_sleep(rust_task *task, size_t time_in_us) {
|
||||
upcall_sleep(task, time_in_us);
|
||||
}
|
||||
|
||||
extern "C" CDECL void
|
||||
task_yield(rust_task *task) {
|
||||
task->yield(1);
|
||||
}
|
||||
|
||||
extern "C" CDECL void
|
||||
task_join(rust_task *task, rust_task *join_task) {
|
||||
// TODO
|
||||
}
|
||||
|
||||
/* Debug builtins for std.dbg. */
|
||||
|
||||
static void
|
||||
|
||||
Reference in New Issue
Block a user