about summary refs log tree commit diff
path: root/src/rt/rust_task.h
AgeCommit message (Collapse)AuthorLines
2011-12-17rt: Cache an extra stack segment to avoid bad behavior at stack boundariesBrian Anderson-0/+1
2011-12-06rt: Rename stk_seg.limit to stk_seg.endBrian Anderson-1/+1
rust_task is using the word limit it two ways, so one has to change.
2011-12-06rt: Various tweaks to make __morestack unwinding work on linuxBrian Anderson-0/+1
When unwinding through __morestack the stack limit in the TLS is invalidated and must be reset. Instead of actually landing at __morestack we're just going to make all our Rust landing pads call upcall_reset_stack_limit, which will find the stack segment that corresponds to the current stack pointer and put the limit in the TLS. Also massively expand the stack segment red zone to make more room for the dynamic linker. Will fix in the future.
2011-12-01rt: Refactor record_sp into task::record_stack_limitBrian Anderson-0/+1
2011-11-30rt: Reorganize stack growth codeBrian Anderson-0/+3
2011-11-30rt: Remove the stack pointer field of stk_segBrian Anderson-1/+0
2011-11-22rt: Make __morestack (without unwinding) work on 32-bit linuxBrian Anderson-0/+1
2011-11-18rt: Remove fail calls from rust_task::yieldBrian Anderson-1/+1
2011-11-18rt: Remove task::on_wakeup. UnusedBrian Anderson-9/+0
2011-11-18rt: Remove rust_task::yield. UnusedBrian Anderson-3/+0
2011-11-16rt: Remove rust_task::notify_tasks_wating_to_joinBrian Anderson-6/+0
2011-11-16fix alignment for chan_handle structs; rust equiv is translatedNiko Matsakis-1/+1
to char[16], not struct{long,long}
2011-11-16enum does not have a size consistent with a tag, so use unsigned long insteadNiko Matsakis-4/+3
2011-11-13rt: Perform task notification before killing the parent taskBrian Anderson-0/+2
2011-11-11rt: Take the task lock when dropping port refcountsBrian Anderson-2/+0
Sucks, but otherwise there are races when one task drops the refcount to zero followed by another bumping it again
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