diff options
| author | toddaaro <github@opprobrio.us> | 2013-06-14 12:17:56 -0700 |
|---|---|---|
| committer | toddaaro <github@opprobrio.us> | 2013-06-14 12:17:56 -0700 |
| commit | d1ec8b5fb85cb6fd4caed64223c5cb3fd920daab (patch) | |
| tree | 47dc844dc524065a5c5c7948c149488ce0390e7b /src/libstd/rt/task.rs | |
| parent | 4224fc7aad3cfbd7093e55812e5a566d7aad3325 (diff) | |
| download | rust-d1ec8b5fb85cb6fd4caed64223c5cb3fd920daab.tar.gz rust-d1ec8b5fb85cb6fd4caed64223c5cb3fd920daab.zip | |
redesigned the pinning to pin deal with things on dequeue, not on enqueue
Diffstat (limited to 'src/libstd/rt/task.rs')
| -rw-r--r-- | src/libstd/rt/task.rs | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/libstd/rt/task.rs b/src/libstd/rt/task.rs index 4d9851d3b40..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,10 +58,15 @@ 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. |
