about summary refs log tree commit diff
path: root/src/rt/rust_task.cpp
AgeCommit message (Collapse)AuthorLines
2011-06-28Renamed what's left of rust_dom to rust_schedulerEric Holk-70/+50
2011-06-28Fixed Win32 compile errors.Eric Holk-1/+1
2011-06-28Removed dom_owned, splitting things between task_owned and kernel_owned. Had ↵Eric Holk-17/+69
to re-xfail a few tests brson recently un-xfailed.
2011-06-28Moved thread management to rust_kernel.Eric Holk-5/+6
2011-06-27A little tidying in rt.Graydon Hoare-14/+13
2011-06-27Implementation mising features in lock_and_signal for Win32. Also lowered ↵Eric Holk-3/+3
the minimum stack size to get the pfib benchmark to run without exhausting its address space on Windows.
2011-06-27Conservatively serialize nearly all upcalls. Successfuly ran make check with ↵Eric Holk-11/+19
RUST_THREADS=8, so we're probably fairly safe now. In the future we can relax the synchronization to get better performance.
2011-06-27Added some locking to ports to prevent the case where two threads ↵Eric Holk-13/+4
simultaneously wake up a task blocked on a certain port.
2011-06-27Basic multithreading support. The infinite loops test successfully maxes out ↵Eric Holk-9/+20
the CPU.
2011-06-15Fixed a problem where spawn arguments were getting lost again. Also, fixed ↵Eric Holk-5/+5
up stack alignment, which closes #496
2011-06-15Step 1 of moving task startup to always be cdecl.Eric Holk-1/+1
2011-06-13This is the mega-ucontext commit. It replaces the task switching mechanism ↵Eric Holk-197/+58
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-27Switching over to wrappers for spawning functions of multiple arguments. ↵Eric Holk-6/+1
Doesn't quite work yet.
2011-05-27Working on 2 argument spawn. The arguments seem to be copied correctly once, ↵Eric Holk-2/+6
but then they get lost.
2011-05-26More delicious dead code removal from runtime, upcalls.Graydon Hoare-11/+2
2011-05-24Only one gc glue.Rafael Ávila de Espíndola-1/+1
2011-05-24There is only one yield glue.Rafael Ávila de Espíndola-1/+3
2011-05-24Remove dead code for unwind_glue.Rafael Ávila de Espíndola-2/+2
2011-05-24"constant propagate" rust_new_exit_task_glue to its only use.Rafael Ávila de Espíndola-4/+4
2011-05-18Remove dead rustboot code.Rafael Ávila de Espíndola-117/+0
2011-05-05Fix OS X build.Rafael Ávila de Espíndola-9/+9
2011-05-05Change the setup so that rust_activate_glue returns to rust_exit_task_glueRafael Ávila de Espíndola-38/+19
and rust_exit_task_glue calls the rust main. This is simpler since we only need to setup one frame. It also matches what ld.so does, so gdb is happy and stops a backtrace at rust_exit_task_glue instead of continuing past whatever function happened to be before rust_exit_task_glue is the object file. This is the rt part and should be merged after the rust0 part.
2011-05-04Try to fail nicely, again.Graydon Hoare-0/+2
2011-05-03Remove unused variable.Rafael Ávila de Espíndola-7/+1
2011-05-03Split start into rustc and rustboot versions. This introduces a bit ofRafael Ávila de Espíndola-27/+114
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-74/+53
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
2011-04-14rt: Remove half-baked, incomplete, commented-out print_stack_trace() stubPatrick Walton-17/+0
2011-04-14rustc: Remove generalize_ty. Instead, maintain an explicit type parameter ↵Patrick Walton-0/+17
substitution list.
2011-04-08add -O2 when compiling rt, fix warnings triggered by optimizerMarijn Haverbeke-2/+2
2011-04-07Move to macro-based logging checks in the C++ codeMarijn Haverbeke-30/+30
No functions should be called for log statements that turn out to be inactive.
2011-03-30Um, that'd be, align the word *before* retpc. Addresses point to the low ↵Graydon Hoare-7/+7
part of a word. Un-XFAIL nbody on Darwin.
2011-03-30Ensure task stacks start out with a 16-byte aligned entry frame. Should make ↵Graydon Hoare-22/+48
OSX behave a bit better.
2011-02-22Add ABI tagging to crates, adjust rustc output and runtime stack-frame setup ↵Graydon Hoare-18/+34
so access to argv works.
2011-02-21Fix typo in rust_task::start. Should be copying 1 fewer initial arg.Graydon Hoare-2/+2
2011-01-14Further corrections to the logging layer in runtime.Graydon Hoare-1/+1
2011-01-03Don't attempt to wake tasks that aren't blocked.Brian Anderson-1/+1
It's possible for a supervised task to kill and wake its supervising task then immediately try to wake it again if the supervising task has joined the supervised. This is the easiest way to prevent that.
2010-11-16Update frame logic to be compatible with SysV x86 ABI. Improves diagnostics.Graydon Hoare-12/+16
2010-10-11Try to print backtraces on failurePatrick Walton-0/+17
2010-09-29Patchwork of attempted fixes to effect system and gc system; eventually give ↵Graydon Hoare-0/+10
up and disable it entirely in the runtime. Will need extensive reworking.
2010-09-10Cleanup, refactoring, and some runtime tests.Michael Bebenita-24/+14
2010-09-08Cache task handles.Michael Bebenita-2/+6
2010-09-07Lots of design changes around proxies and message passing. Made it so that ↵Michael Bebenita-4/+9
domains can only talk to other domains via handles, and with the help of the rust_kernel.
2010-09-07Change signature of array_list::pop().Michael Bebenita-1/+2
2010-08-20Disable task-growing logic for now until #151 is fixedPatrick Walton-1/+10
2010-08-17Added labels to blocking conditions.Michael Bebenita-1/+4
2010-08-11Added support for task sleeping in the scheduler.Michael Bebenita-3/+9
2010-08-10Merge commit 'jyasskin/work'Graydon Hoare-19/+24
Conflicts: src/rt/rust_dom.cpp src/rt/rust_upcall.cpp
2010-08-09Synthesize a flush_chan upcall right before a channel's ref_count drops to ↵Michael Bebenita-0/+5
zero. This should only happen in the Rust code and not in the drop glue, or on the unwind path. This change allows the task owning the channel to block on a flush and delete its own channel. This change also cleans up some code around rust_port and rust_chan.
2010-08-09Fixed deadlock in the scheduler caused by condition variables.Michael Bebenita-3/+0
2010-08-09Some pretty printing in the runtime.Michael Bebenita-0/+5