diff options
| author | Brian Anderson <banderson@mozilla.com> | 2013-06-15 17:00:36 -0700 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2013-06-15 17:00:36 -0700 |
| commit | b08c4467980bc712995d421dd50c1cca2948b67b (patch) | |
| tree | 7ab9a238f0461ec8edbea5fe4cfa5d792ae57d82 /src/libstd/rt/task.rs | |
| parent | e7213aa21e9a79db01d2e9d1b76761a420e4c967 (diff) | |
| parent | d1ec8b5fb85cb6fd4caed64223c5cb3fd920daab (diff) | |
| download | rust-b08c4467980bc712995d421dd50c1cca2948b67b.tar.gz rust-b08c4467980bc712995d421dd50c1cca2948b67b.zip | |
Merge remote-tracking branch 'toddaaro/io' into io
Diffstat (limited to 'src/libstd/rt/task.rs')
| -rw-r--r-- | src/libstd/rt/task.rs | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/libstd/rt/task.rs b/src/libstd/rt/task.rs index cf4967b12b3..06318ac6623 100644 --- a/src/libstd/rt/task.rs +++ b/src/libstd/rt/task.rs @@ -19,6 +19,7 @@ use cast::transmute; use rt::local::Local; use super::local_heap::LocalHeap; use rt::logging::StdErrLogger; +use rt::sched::{SchedHome, AnySched}; pub struct Task { heap: LocalHeap, @@ -26,7 +27,8 @@ pub struct Task { storage: LocalStorage, logger: StdErrLogger, unwinder: Option<Unwinder>, - destroyed: bool + destroyed: bool, + home: Option<SchedHome> } pub struct GarbageCollector; @@ -44,7 +46,8 @@ impl Task { storage: LocalStorage(ptr::null(), None), logger: StdErrLogger, unwinder: Some(Unwinder { unwinding: false }), - destroyed: false + destroyed: false, + home: Some(AnySched) } } @@ -55,14 +58,19 @@ impl Task { storage: LocalStorage(ptr::null(), None), logger: StdErrLogger, unwinder: None, - destroyed: false + destroyed: false, + home: Some(AnySched) } } + pub fn give_home(&mut self, new_home: SchedHome) { + self.home = Some(new_home); + } + pub fn run(&mut self, f: &fn()) { // This is just an assertion that `run` was called unsafely // and this instance of Task is still accessible. - do Local::borrow::<Task> |task| { + do Local::borrow::<Task, ()> |task| { assert!(ptr::ref_eq(task, self)); } @@ -87,7 +95,7 @@ impl Task { fn destroy(&mut self) { // This is just an assertion that `destroy` was called unsafely // and this instance of Task is still accessible. - do Local::borrow::<Task> |task| { + do Local::borrow::<Task, ()> |task| { assert!(ptr::ref_eq(task, self)); } match self.storage { |
