about summary refs log tree commit diff
path: root/src/rt/rust_task.h
AgeCommit message (Collapse)AuthorLines
2012-02-14rt: Maintain stack ptrs correctly when returning from stack switchesBrian Anderson-0/+6
2012-02-09rt: Disable some expensive assertsBrian Anderson-33/+8
2012-02-09rt: Inline everything on the C-stack-switching pathBrian Anderson-0/+103
2012-02-09rt: Add upcall_call_shim_on_rust_stackBrian Anderson-0/+2
2012-02-09rt: Use rust_task_thread's C-stack pool for native callsBrian Anderson-0/+11
2012-02-09rt: Add rust_task::call_on_c_stackBrian Anderson-0/+2
2012-02-09rt: Move some stack manipulation functions into rust_taskBrian Anderson-0/+6
2012-02-09rt: Rename new_stack to next_stack, del_stack to prev_stackBrian Anderson-2/+2
2012-02-09rt: Remove rust_task::rust_spBrian Anderson-2/+0
2012-02-09rt: Remove rust_task_user structBrian Anderson-12/+6
2012-02-09rt: Add a function for configuring task notificationBrian Anderson-0/+2
2012-02-09rt: Begin moving stack-building functions to rust_stack.cppBrian Anderson-12/+1
2012-02-08rt: Change the lifecycle of tasks and schedulers for various reasonsBrian Anderson-2/+5
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-03rt: Add a field to rust_task to hold its schedulerBrian Anderson-1/+1
2012-02-03rt: Rename rust_scheduler to rust_task_threadBrian Anderson-2/+2
2012-02-03Remove experimental GC codeMarijn Haverbeke-2/+2
It's been sitting unused long enough to have bitrotted completely.
2012-02-02rt: Remove rust_task::can_schedule. Does nothingBrian Anderson-2/+0
2012-02-02rt: Remove running_on flag. Does nothingBrian Anderson-4/+0
2012-02-02rt: Remove task pinning. Does nothingBrian Anderson-5/+0
2012-02-02rt: Rename task_sleep intrinsic to task_yield. Remove usec paramBrian Anderson-2/+2
2012-02-02rt: Remove yield timersBrian Anderson-3/+0
2012-02-01make boxes self-describing (fixes #1493)" (take 2)Niko Matsakis-7/+3
this will be used to generate a new snapshot.
2012-02-01Revert "make boxes self-describing (fixes #1493)" until a newNiko Matsakis-3/+7
snapshot is prepared.
2012-02-01make boxes self-describing (fixes #1493)Niko Matsakis-7/+3
2012-01-29rt: Make the initial segment of the main task's stack 1MBBrian Anderson-1/+2
This is a trick to fool microbenchmarks. Closes #1681
2012-01-11rt: Add RUST_MAX_STACK env var with 8MB defaultBrian Anderson-0/+3
Closes #1489
2012-01-09add rust_task_is_unwinding predicate and do not kill if already unwindingNiko Matsakis-2/+4
2012-01-06fix how we walk functions to match new closure fmtNiko Matsakis-13/+1
2012-01-06rewrite task testsNiko Matsakis-2/+13
2012-01-06simplify task implNiko Matsakis-5/+3
2011-12-20Revert "wip"Brian Anderson-1/+0
This reverts commit aeadc6269ef76f4425a49d892ceac7ea311ef5c1.
2011-12-20wipBrian Anderson-0/+1
2011-12-20rt: Remove rust_task::grow. ObsoleteBrian Anderson-1/+0
2011-12-20rt: Add a canary value to the end of every stackBrian Anderson-0/+1
Check it on upcall entry and exit, and on stack deletion
2011-12-18rt: Get rid of the rethrow in upcall_failBrian Anderson-0/+1
Throwing in upcall_fail ends up running lots of code in the red zone. To avoid it we have the personality function figure out which stack it's on and switch as needed.
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