Brian Anderson
d5e7f0d113
rt: Don't kill tasks while they are in a callback from C
2012-02-14 11:24:09 -08:00
Brian Anderson
a393fb3221
rt: Maintain stack ptrs correctly when returning from stack switches
2012-02-14 11:24:09 -08:00
Brian Anderson
214cdd0dee
rustc: Translate crust functions
2012-02-14 11:24:09 -08:00
Brian Anderson
4cc1e31f74
rt: Add a Rust callback debugging function
2012-02-14 11:24:09 -08:00
Ted Horst
a7a1152db5
put fflush back in
2012-02-10 19:42:32 -08:00
Ted Horst
36d5074f8f
log to stderr instead of stdout
...
includes rustc diagnostics
runtest updated to check stderr for errors
2012-02-10 19:42:32 -08:00
Brian Anderson
b9e0ee8e7e
rt: Add docs to stack functions
2012-02-10 12:58:35 -08:00
Brian Anderson
3af4b2c998
rt: Call register/deregister_valgrind_stack from the stack con/destructors
2012-02-10 12:58:35 -08:00
Brian Anderson
3406da49d9
rt: Extract prepare_valgrind_stack from register_valgrind_stack
2012-02-10 12:58:35 -08:00
Brian Anderson
c42492e6aa
rt: Rename config_valgrind_stack to register_valgrind_stack, etc
2012-02-10 12:58:35 -08:00
Brian Anderson
dd0ae80e63
rt: Account for the size of stack_canary in create_stack
2012-02-10 12:58:35 -08:00
Brian Anderson
fc028c30a0
rt: Move the addition of the stack canary into create_stack
2012-02-10 12:58:35 -08:00
Brian Anderson
8e55d3130a
rt: Use 100k stacks for scheduler threads
2012-02-10 11:53:30 -08:00
Marijn Haverbeke
d01e7cd340
Represent boxed ifaces in a way similar to functions
...
They are now a (dictptr, box) pair, where box is a regular boxed
representation of the inner type. This cuts down on some special
case code.
Also removes some code from trans::base that was moved to shape but
then somehow restored in trans::base through a bad merge.
Starts on issue #1567
2012-02-10 12:36:57 +01:00
Brian Anderson
d493438c98
rt: Disable some expensive asserts
2012-02-09 22:58:40 -08:00
Brian Anderson
d90a9d3da0
rt: Inline everything on the C-stack-switching path
2012-02-09 22:15:15 -08:00
Brian Anderson
dff256cd19
rt: Move valgrind stack configuration out of the hot path
2012-02-09 21:27:50 -08:00
Brian Anderson
81e1564a7d
rt: Detach pthreads before exiting
...
Joinable pthreads need to be either joined or detached and we no
longer join with the scheduler threads.
2012-02-09 19:00:16 -08:00
Brian Anderson
5d8d591ffc
rt: Remove sync::yield and sync::sleep
2012-02-09 19:00:16 -08:00
Brian Anderson
421c8db144
rt: Move rust_thread to its own files
2012-02-09 19:00:16 -08:00
Brian Anderson
8ad9cf8087
rt: Add more stack-switching commentary
2012-02-09 19:00:16 -08:00
Brian Anderson
5d2442d89c
rt: Add upcall_call_shim_on_rust_stack
2012-02-09 19:00:16 -08:00
Brian Anderson
79b1563abb
rt: Use rust_task_thread's C-stack pool for native calls
2012-02-09 19:00:16 -08:00
Brian Anderson
bfb80064d2
rt: Add methods to rust_task_thread for borrowing C stacks
2012-02-09 19:00:16 -08:00
Brian Anderson
8fe506bdca
rt: Move more setup code into create_stack
2012-02-09 19:00:16 -08:00
Brian Anderson
ea76d3f454
rt: Add rust_task::call_on_c_stack
2012-02-09 19:00:16 -08:00
Brian Anderson
1e2fe4ab8f
rt: Rename call_shim_on_c_stack to call_and_change_stacks
2012-02-09 19:00:15 -08:00
Brian Anderson
0667fb4e63
rt: Make rust_task::ref_count private
2012-02-09 19:00:15 -08:00
Brian Anderson
ae8ea4a78b
rt: Add constructors and destructors for stacks
2012-02-09 19:00:15 -08:00
Brian Anderson
b98df86c09
rt: Move some stack manipulation functions into rust_task
2012-02-09 19:00:15 -08:00
Brian Anderson
4bd8f8d936
rt: Rename new_stack to next_stack, del_stack to prev_stack
2012-02-09 19:00:15 -08:00
Brian Anderson
889a783494
rt: Remove rust_task::rust_sp
2012-02-09 19:00:15 -08:00
Brian Anderson
d39ea47746
rt: Remove rust_task_user struct
2012-02-09 19:00:15 -08:00
Brian Anderson
1dad32c015
rt: Remove unused builtins
2012-02-09 19:00:15 -08:00
Brian Anderson
d756b01619
rt: Add a function for configuring task notification
2012-02-09 19:00:15 -08:00
Brian Anderson
e0d5b92b84
rt: Begin moving stack-building functions to rust_stack.cpp
2012-02-09 19:00:15 -08:00
Brian Anderson
2983e77383
rt: Remove unused context functions
2012-02-09 19:00:15 -08:00
Jyun-Yan You
b778dac197
fix build on freebsd
2012-02-09 18:41:57 -08:00
Brian Anderson
149d1d4a6e
core: Add a test for blocking in native code
2012-02-08 15:42:51 -08:00
Brian Anderson
35ba9715fa
core: Add task::spawn_sched
...
This function creates a new scheduler with a specified number of threads and
immediately executes a task on it. The scheduler is configured to terminate
when the task dies. This is the minimum API necessary to enable blocking C
calls.
2012-02-08 15:42:51 -08:00
Brian Anderson
2f4e7c157e
rt: Export a scheduler API
2012-02-08 15:42:51 -08:00
Brian Anderson
f2a1aa2649
rt: Hold schedulers in a map
2012-02-08 15:42:51 -08:00
Brian Anderson
028af5cb6c
rt: Change the lifecycle of tasks and schedulers for various reasons
...
This is in preparation for giving schedulers their own life cycle separate
from the kernel.
Tasks must be deleted before their scheduler thread, so we can't let the
scheduler exit before all its tasks have been cleaned up. In this scheme,
the scheduler will unregister tasks with the kernel when they are reaped,
then drop their ref on the task (there may still be others). When the task
ref count hits zero, the task will request to be unregistered from the
scheduler, which is responsible for deleting the task.
Instead of having the kernel tell the scheduler to exit, let the scheduler
decide when to exit. For now it will exit when all of its tasks are
unregistered.
2012-02-08 15:42:51 -08:00
Brian Anderson
ebc3646c39
rt: Start schedulers immediately upon creation
2012-02-08 15:42:51 -08:00
Brian Anderson
7685e5de94
rt: Refactor the rust_kernel interface a bit
2012-02-08 15:42:47 -08:00
Brian Anderson
ad80823a6c
rt: Introduce scheduler ids
2012-02-08 15:33:40 -08:00
Brian Anderson
c76b81cddf
rt: Delete schedulers immediately upon release
...
This will be needed once we support dynamically changing schedulers.
2012-02-08 15:33:40 -08:00
Brian Anderson
f39e64d56a
rt: Change the scheme used for terminating the kernel
...
Instead of joining on the scheduler threads, instead keep a count of active
schedulers. When there are no more schedulers raise a signal for the main
thread to continue.
This will be required once schedulers can be added and removed from the
running kernel.
2012-02-08 15:33:40 -08:00
Brian Anderson
6eafe5d772
rt: Remove is_running flag from rust_thread. Unused
2012-02-08 15:33:40 -08:00
Brian Anderson
fad3de5900
rt: Remove rust_scheduler::rval. Unused
2012-02-08 15:33:40 -08:00