about summary refs log tree commit diff
path: root/src/rt/rust_task.h
AgeCommit message (Collapse)AuthorLines
2011-11-11rt: Remove rust_chanBrian Anderson-1/+1
2011-10-31Stub a __morestack implementation and stack segment allocation. Untested.Patrick Walton-1/+6
2011-09-26rt: Turn on cycle collection at task death; add a test casePatrick Walton-0/+1
2011-09-26rt: Make the logic that moves environments between tasks update the GC alloc ↵Patrick Walton-0/+5
chain correctly
2011-09-23rt: Add a RUST_TRACK_ORIGINS debug flag to help track down memory corruptionPatrick Walton-0/+11
2011-09-21rustc: Port the fn and obj traversal logic over from the GC branch. Doesn't ↵Patrick Walton-1/+1
actually do anything yet due to lack of support in trans.
2011-09-20rt: Add an on-the-side GC chainPatrick Walton-0/+4
2011-09-20rt: Remove the GC alloc chainPatrick Walton-1/+0
2011-09-19rt: Introduce a self-describing box representation and functions to create ↵Patrick Walton-1/+3
and free them
2011-09-14Make failure propagation to dead parents workBrian Anderson-0/+1
The failure will basically go 'through' the dead parent and continue propagating the failure (as if the child was reparented).
2011-09-14Make linked task failure work againBrian Anderson-0/+2
2011-09-07Unwind the stack on task failureBrian Anderson-0/+1
When a task fails, we will throw an exception, then catch it at the bottom of the stack. On Windows we don't do this yet because the exception doesn't propagate correctly. No cleanups yet. Issue #236
2011-09-07Rewrite spawn yet againBrian Anderson-1/+4
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-25Cleaning up task and comm exports, updating all the test cases.Eric Holk-1/+2
2011-08-19rt: Remove rustboot's GC infrastructurePatrick Walton-21/+1
2011-08-17Making more of the rust_task structure directly accessible from Rust.Eric Holk-4/+3
2011-08-16rt: Implement obstacks, untested as of yetPatrick Walton-0/+3
2011-08-16New channel-based task status notifications.Eric Holk-0/+23
2011-08-16Removed trans_comm.rs from the compiler. Updating aio/sio to work with the ↵Eric Holk-0/+2
new chan and port system, started on a networking module for the standard library.
2011-08-15Reducing the chances for race conditions in join.Eric Holk-0/+4
2011-08-15Added a library version of spawn. Before long, we can remove the old version.Eric Holk-0/+1
2011-08-15First step towards port handles.Eric Holk-0/+7
2011-08-08Introduced task handles.unknown-1/+2
This is the new way to refer to tasks in rust-land. Currently all they do is serve as a key to look up the old rust_task structure. Ideally they won't be ref counted, but baby steps.
2011-08-05Atomic ref counting for chans.Eric Holk-8/+1
2011-07-29Removing proxies and message queues.Eric Holk-4/+0
2011-07-28Atomic reference counting for tasks.Eric Holk-3/+12
2011-07-28Per-thread scheduling. Closes #682.Eric Holk-0/+1
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-2/+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-15Modify task::join to indicate how the task terminatedBrian Anderson-0/+3
This involves sticking yet another field into the task structure
2011-07-13Prohibit trailing whitespace under 'tidy' script. Clean up all caught cases.Graydon Hoare-1/+1
2011-07-13Fix compile-command lines in rt.Graydon Hoare-1/+1
2011-07-13Remove obsolete nargs counts from runtime.Graydon Hoare-4/+4
2011-07-07Work on debugging race conditions.Eric Holk-0/+2
Ports and channels have been moved to the kernel pool, since they've been known to outlive their associated task. This probably isn't the right thing to do, the life cycle needs fixed instead. Some refactorying in memory_region.cpp. Added a helper function to increment and decrement the allocation counter. This makes it easier to switch between atomic and non-atomic increments. Using atomic increments for now, although this still does not fix the problem.
2011-07-07Removing the synchronized memory region from tasks.Eric Holk-6/+0
2011-07-06Added a task wakeup callback. Closes #599.Eric Holk-0/+9
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/+1
2011-06-29Adding support for pinning tasks to the currently running thread. Closes #598.Eric Holk-2/+6
2011-06-28Renamed what's left of rust_dom to rust_schedulerEric Holk-4/+4
2011-06-28Removed dom_owned, splitting things between task_owned and kernel_owned. Had ↵Eric Holk-3/+36
to re-xfail a few tests brson recently un-xfailed.
2011-06-28Moved thread management to rust_kernel.Eric Holk-0/+1
2011-06-27Fixed a few concurrency bugs. Still not perfect, but overall it seems much ↵Eric Holk-1/+1
more reliable.
2011-06-27Basic multithreading support. The infinite loops test successfully maxes out ↵Eric Holk-0/+6
the CPU.
2011-06-15Fixed a problem where spawn arguments were getting lost again. Also, fixed ↵Eric Holk-2/+1
up stack alignment, which closes #496
2011-06-13This is the mega-ucontext commit. It replaces the task switching mechanism ↵Eric Holk-10/+4
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.
2011-05-26More delicious dead code removal from runtime, upcalls.Graydon Hoare-1/+1
2011-05-24"constant propagate" rust_new_exit_task_glue to its only use.Rafael Ávila de Espíndola-2/+1
2011-05-18Remove dead rustboot code.Rafael Ávila de Espíndola-9/+0
2011-05-03Split start into rustc and rustboot versions. This introduces a bit ofRafael Ávila de Espíndola-0/+8
duplication, but we will hopefully drop the rustboot one soon. This is also a preparation for changing the rustc one to have the activate glue return to the exit glue which will then call the main function. This (returning to the function that calls main) matches what happens when loader stats a program or a new thread. It lets gdb produce good backtraces and should help with EH too.
2011-04-19Overhaul logging system in runtimeMarijn Haverbeke-2/+0
See https://github.com/graydon/rust/wiki/Logging-vision The runtime logging categories are now treated in the same way as modules in compiled code. Each domain now has a log_lvl that can be used to restrict the logging from that domain (will be used to allow logging to be restricted to a single domain). Features dropped (can be brought back to life if there is interest): - Logger indentation - Multiple categories per log statement - I possibly broke some of the color code -- it confuses me