about summary refs log tree commit diff
path: root/src/rt/rust_scheduler.cpp
AgeCommit message (Collapse)AuthorLines
2011-12-08rt: Make __morestack work on win32Brian Anderson-0/+1
2011-12-06rt: Rename stk_seg.limit to stk_seg.endBrian Anderson-1/+0
rust_task is using the word limit it two ways, so one has to change.
2011-12-01rt: Refactor record_sp into task::record_stack_limitBrian Anderson-4/+1
2011-11-22rt: Make __morestack (without unwinding) work on 32-bit linuxBrian Anderson-0/+4
2011-11-18rt: Remove task::on_wakeup. UnusedBrian Anderson-1/+0
2011-11-17rt: Make stack growth code build on LinuxBrian Anderson-4/+0
2011-11-17rt: More work on morestackPatrick Walton-0/+10
2011-11-16Revert "rt: More work on morestack"Brian Anderson-10/+0
This reverts commit 68aff2ad6d55a051e9347aa38f945d114f282691.
2011-11-16Revert "rt: Make stack growth code build on Linux"Brian Anderson-0/+4
This reverts commit da4b7da4e142a4c2119312c0e24b7c20bbe74e60.
2011-11-16rt: Make stack growth code build on LinuxBrian Anderson-4/+0
2011-11-16rt: More work on morestackPatrick Walton-0/+10
2011-11-16rt: Remove rust_task::notify_tasks_wating_to_joinBrian Anderson-1/+0
2011-11-14Revert "rt: More work on morestack"Patrick Walton-10/+0
This reverts commit ced0d4f15e11e2c74766d1055146946ded3fba51.
2011-11-14rt: More work on morestackPatrick Walton-0/+10
2011-09-28rt: Expose the C stack inside the Rust scheduler so that C calls can switch ↵Patrick Walton-4/+2
to it
2011-09-27rt: Store the task in TLSPatrick Walton-0/+57
2011-09-20rt: Rename rand() to isaac_rand() since the former prevents lots of standard ↵Patrick Walton-1/+1
headers from being included
2011-09-14Unsupervise tasks before the scheduler kills them. Unblock before yield->failBrian Anderson-0/+4
2011-09-11Use a unique exit status when the runtime fails normallyBrian Anderson-1/+1
Check for it in run-fail tests
2011-09-07Rewrite spawn yet againBrian Anderson-2/+2
The motivation here is that the bottom of each stack needs to contain a C++ try/catch block so that we can unwind. This is already the case for main, but not spawned tasks. Issue #236
2011-08-20Fix comment typosBrian Anderson-2/+2
2011-08-20Rewrite reap_dead_tasks to never grab the sched lock before a task lockBrian Anderson-5/+46
Doing so contradicts the locking order used everywhere else and causes deadlocks. Un-XFAIL task-perf-spawnalot Closes #854
2011-08-18Remove rc_base. Closes #603.Michael Sullivan-0/+1
2011-08-17Making more of the rust_task structure directly accessible from Rust.Eric Holk-4/+4
2011-08-10rt: Shutdown gracefully on failureBrian Anderson-1/+15
When the kernel fails, kill all tasks and wait for the schedulers to stop instead of just exiting. I'm sure there are tons of lurking issues here but this is enough to fail without leaking (at least in the absence of cleanups).
2011-08-03Sleep for a nonzero amount of time on Windows.Eric Holk-1/+1
2011-08-01Replace a lock/unlock with scoped_lock in rust_scheduler::create_taskBrian Anderson-3/+5
2011-07-29Minimize scheduler locking on task creationBrian Anderson-0/+2
This takes my CPU utilization on task-perf-spawnalot from 35% to 55%
2011-07-29Removing proxies and message queues.Eric Holk-31/+8
2011-07-28Do all runtime calls to getenv at initializationBrian Anderson-1/+3
getenv is not threadsafe and (maybe as a result) it's randomly crashing with CFLAGS=-g and RUST_THREADS=32. Calls from rust code are still on their own.
2011-07-28Atomic reference counting for tasks.Eric Holk-14/+11
2011-07-28Made task threads wait instead of sleep, so they can be woken up. This ↵Eric Holk-9/+7
appears to give us much better parallel performance. Also, commented out one more unsafe log and updated rust_kernel.cpp to compile under g++
2011-07-28Per-thread scheduling. Closes #682.Eric Holk-23/+33
Tasks are spawned on a random thread. Currently they stay there, but we should add task migration and load balancing in the future. This should drammatically improve our task performance benchmarks.
2011-07-28Made root_task no longer special.Eric Holk-3/+0
2011-07-21Lots of work on memory tracking and channels.Eric Holk-1/+2
We're trying to get closer to doing correct move semantics for channel operations. This involves a lot of cleanup (such as removing the unused sched parameter from rust_vec constructor) and making circular_buffer kernel_owned. Added tagging for memory allocations. This means we give a string tag to everything we allocate. If we leak something and TRACK_ALLOCATIONS is enabled, then it's much easier now to tell exactly what is leaking.
2011-07-14Move the responsibility for process failure from tasks to the schedulerBrian Anderson-0/+1
When the root task fails the process fails. Failures on other tasks propagate up the task tree. Failures on non-root tasks without parents just (theoretically) unwind and disappear.
2011-07-13Fix compile-command lines in rt.Graydon Hoare-1/+1
2011-07-13Attempt to correct buggy win32 timer code (causing tinderbox failures).Graydon Hoare-2/+3
2011-07-06Added a task wakeup callback. Closes #599.Eric Holk-1/+3
The callback happens when a task moves from the "blocked" state to the "running" state. The callback is also inherited by child tasks. There is currently only a native API. This code hasn't been heavily exercised yet.
2011-06-29Added inheritance for task pinning. Closes #598 for real.Eric Holk-0/+2
2011-06-29Adding support for pinning tasks to the currently running thread. Closes #598.Eric Holk-10/+9
2011-06-28Renamed what's left of rust_dom to rust_schedulerEric Holk-0/+308