From cb9ee7f5be0de2bb93688f8e2ef2934eb3bd7df7 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Sun, 28 Jul 2013 16:18:12 -0700 Subject: std: Remove ManualThreads spawn mode --- src/libstd/task/mod.rs | 37 ------------------------------------- src/libstd/task/rt.rs | 2 -- src/libstd/task/spawn.rs | 8 +------- 3 files changed, 1 insertion(+), 46 deletions(-) (limited to 'src/libstd/task') diff --git a/src/libstd/task/mod.rs b/src/libstd/task/mod.rs index df927cb6a7a..f78b4085cd0 100644 --- a/src/libstd/task/mod.rs +++ b/src/libstd/task/mod.rs @@ -107,8 +107,6 @@ pub enum SchedMode { SingleThreaded, /// Tasks are distributed among available CPUs ThreadPerTask, - /// Tasks are distributed among a fixed number of OS threads - ManualThreads(uint), } /** @@ -932,13 +930,6 @@ fn test_try_fail() { } } -#[test] -#[should_fail] -#[ignore(cfg(windows))] -fn test_spawn_sched_no_threads() { - do spawn_sched(ManualThreads(0u)) { } -} - #[test] fn test_spawn_sched() { let (po, ch) = stream::<()>(); @@ -1219,34 +1210,6 @@ fn test_child_doesnt_ref_parent() { task::spawn(child_no(0)); } -#[test] -fn test_spawn_thread_on_demand() { - let (port, chan) = comm::stream(); - - do spawn_sched(ManualThreads(2)) || { - unsafe { - let max_threads = rt::rust_sched_threads(); - assert_eq!(max_threads as int, 2); - let running_threads = rt::rust_sched_current_nonlazy_threads(); - assert_eq!(running_threads as int, 1); - - let (port2, chan2) = comm::stream(); - - do spawn_sched(CurrentScheduler) || { - chan2.send(()); - } - - let running_threads2 = rt::rust_sched_current_nonlazy_threads(); - assert_eq!(running_threads2 as int, 2); - - port2.recv(); - chan.send(()); - } - } - - port.recv(); -} - #[test] fn test_simple_newsched_spawn() { use rt::test::run_in_newsched_task; diff --git a/src/libstd/task/rt.rs b/src/libstd/task/rt.rs index 3720bc585cc..13c51230dc2 100644 --- a/src/libstd/task/rt.rs +++ b/src/libstd/task/rt.rs @@ -36,8 +36,6 @@ extern { pub fn rust_get_sched_id() -> sched_id; pub fn rust_new_sched(num_threads: libc::uintptr_t) -> sched_id; - pub fn rust_sched_threads() -> libc::size_t; - pub fn rust_sched_current_nonlazy_threads() -> libc::size_t; pub fn get_task_id() -> task_id; #[rust_stack] diff --git a/src/libstd/task/spawn.rs b/src/libstd/task/spawn.rs index 61dcc33c629..7f343a15f94 100644 --- a/src/libstd/task/spawn.rs +++ b/src/libstd/task/spawn.rs @@ -84,7 +84,7 @@ use local_data; use task::local_data_priv::{local_get, local_set, OldHandle}; use task::rt::rust_task; use task::rt; -use task::{Failure, ManualThreads, PlatformThread, SchedOpts, SingleThreaded}; +use task::{Failure, PlatformThread, SchedOpts, SingleThreaded}; use task::{Success, TaskOpts, TaskResult, ThreadPerTask}; use task::{ExistingScheduler, SchedulerHandle}; use task::unkillable; @@ -814,12 +814,6 @@ fn spawn_raw_oldsched(mut opts: TaskOpts, f: ~fn()) { ThreadPerTask => { fail!("ThreadPerTask scheduling mode unimplemented") } - ManualThreads(threads) => { - if threads == 0u { - fail!("can not create a scheduler with no threads"); - } - threads - } }; unsafe { -- cgit 1.4.1-3-g733a5 From 85fd75ac47a2a70ac9ccdddbe2d1de6425e99be8 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Mon, 29 Jul 2013 11:49:33 -0700 Subject: std: Remove ThreadPerTask spawn mode. Unimplemented --- src/libstd/task/mod.rs | 2 -- src/libstd/task/spawn.rs | 5 +---- 2 files changed, 1 insertion(+), 6 deletions(-) (limited to 'src/libstd/task') diff --git a/src/libstd/task/mod.rs b/src/libstd/task/mod.rs index f78b4085cd0..503085b412b 100644 --- a/src/libstd/task/mod.rs +++ b/src/libstd/task/mod.rs @@ -105,8 +105,6 @@ pub enum SchedMode { PlatformThread, /// All tasks run in the same OS thread SingleThreaded, - /// Tasks are distributed among available CPUs - ThreadPerTask, } /** diff --git a/src/libstd/task/spawn.rs b/src/libstd/task/spawn.rs index 7f343a15f94..020d9487a17 100644 --- a/src/libstd/task/spawn.rs +++ b/src/libstd/task/spawn.rs @@ -85,7 +85,7 @@ use task::local_data_priv::{local_get, local_set, OldHandle}; use task::rt::rust_task; use task::rt; use task::{Failure, PlatformThread, SchedOpts, SingleThreaded}; -use task::{Success, TaskOpts, TaskResult, ThreadPerTask}; +use task::{Success, TaskOpts, TaskResult}; use task::{ExistingScheduler, SchedulerHandle}; use task::unkillable; use to_bytes::IterBytes; @@ -811,9 +811,6 @@ fn spawn_raw_oldsched(mut opts: TaskOpts, f: ~fn()) { | ExistingScheduler(*) | PlatformThread => 0u, /* Won't be used */ SingleThreaded => 1u, - ThreadPerTask => { - fail!("ThreadPerTask scheduling mode unimplemented") - } }; unsafe { -- cgit 1.4.1-3-g733a5 From 5d2b8d43729f3c616f0af0125f05e2cab9d0aae4 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Mon, 29 Jul 2013 12:00:55 -0700 Subject: std: Remove PlatformThread spawn mode. Obsolete --- src/libstd/task/mod.rs | 18 --------------- src/libstd/task/spawn.rs | 6 ++--- src/test/run-pass/platform_thread.rs | 44 ------------------------------------ 3 files changed, 2 insertions(+), 66 deletions(-) delete mode 100644 src/test/run-pass/platform_thread.rs (limited to 'src/libstd/task') diff --git a/src/libstd/task/mod.rs b/src/libstd/task/mod.rs index 503085b412b..c14926ba5a4 100644 --- a/src/libstd/task/mod.rs +++ b/src/libstd/task/mod.rs @@ -96,13 +96,6 @@ pub enum SchedMode { CurrentScheduler, /// Run task on a specific scheduler ExistingScheduler(Scheduler), - /** - * Tasks are scheduled on the main OS thread - * - * The main OS thread is the thread used to launch the runtime which, - * in most cases, is the process's initial thread as created by the OS. - */ - PlatformThread, /// All tasks run in the same OS thread SingleThreaded, } @@ -1094,17 +1087,6 @@ fn test_avoid_copying_the_body_unlinked() { } } -#[test] -fn test_platform_thread() { - let (po, ch) = stream(); - let mut builder = task(); - builder.sched_mode(PlatformThread); - do builder.spawn { - ch.send(()); - } - po.recv(); -} - #[test] #[ignore(cfg(windows))] #[should_fail] diff --git a/src/libstd/task/spawn.rs b/src/libstd/task/spawn.rs index 020d9487a17..1e4d781c5d2 100644 --- a/src/libstd/task/spawn.rs +++ b/src/libstd/task/spawn.rs @@ -84,7 +84,7 @@ use local_data; use task::local_data_priv::{local_get, local_set, OldHandle}; use task::rt::rust_task; use task::rt; -use task::{Failure, PlatformThread, SchedOpts, SingleThreaded}; +use task::{Failure, SchedOpts, SingleThreaded}; use task::{Success, TaskOpts, TaskResult}; use task::{ExistingScheduler, SchedulerHandle}; use task::unkillable; @@ -808,8 +808,7 @@ fn spawn_raw_oldsched(mut opts: TaskOpts, f: ~fn()) { let num_threads = match opts.mode { DefaultScheduler | CurrentScheduler - | ExistingScheduler(*) - | PlatformThread => 0u, /* Won't be used */ + | ExistingScheduler(*) => 0u, /* Won't be used */ SingleThreaded => 1u, }; @@ -817,7 +816,6 @@ fn spawn_raw_oldsched(mut opts: TaskOpts, f: ~fn()) { let sched_id = match opts.mode { CurrentScheduler => rt::rust_get_sched_id(), ExistingScheduler(SchedulerHandle(id)) => id, - PlatformThread => rt::rust_osmain_sched_id(), _ => rt::rust_new_sched(num_threads) }; rt::rust_new_task_in_sched(sched_id) diff --git a/src/test/run-pass/platform_thread.rs b/src/test/run-pass/platform_thread.rs deleted file mode 100644 index 8569cd30cf5..00000000000 --- a/src/test/run-pass/platform_thread.rs +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2012 The Rust Project Developers. See the COPYRIGHT -// file at the top-level directory of this distribution and at -// http://rust-lang.org/COPYRIGHT. -// -// Licensed under the Apache License, Version 2.0 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -// Jump back and forth between the OS main thread and a new scheduler. -// The OS main scheduler should continue to be available and not terminate -// while it is not in use. - -use std::task; - -pub fn main() { - run(100); -} - -fn run(i: int) { - - info!(i); - - if i == 0 { - return; - } - - let mut builder = task::task(); - builder.sched_mode(task::PlatformThread); - builder.unlinked(); - do builder.spawn { - task::yield(); - let mut builder = task::task(); - builder.sched_mode(task::SingleThreaded); - builder.unlinked(); - do builder.spawn { - task::yield(); - run(i - 1); - task::yield(); - } - task::yield(); - } -} -- cgit 1.4.1-3-g733a5 From 08480e4fda203fe3c0392563d4a13312958648dc Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Mon, 29 Jul 2013 12:04:31 -0700 Subject: std: Remove ExistingScheduler spawn mode. Unused --- src/libstd/task/mod.rs | 14 +------------- src/libstd/task/spawn.rs | 5 +---- 2 files changed, 2 insertions(+), 17 deletions(-) (limited to 'src/libstd/task') diff --git a/src/libstd/task/mod.rs b/src/libstd/task/mod.rs index c14926ba5a4..d9e119e2d2c 100644 --- a/src/libstd/task/mod.rs +++ b/src/libstd/task/mod.rs @@ -44,7 +44,7 @@ use result::Result; use result; use rt::{context, OldTaskContext, TaskContext}; use rt::local::Local; -use task::rt::{task_id, sched_id}; +use task::rt::task_id; use unstable::finally::Finally; use util; @@ -58,12 +58,6 @@ mod local_data_priv; pub mod rt; pub mod spawn; -/// A handle to a scheduler -#[deriving(Eq)] -pub enum Scheduler { - SchedulerHandle(sched_id) -} - /// A handle to a task #[deriving(Eq)] pub enum Task { @@ -94,8 +88,6 @@ pub enum SchedMode { DefaultScheduler, /// Run task on the current scheduler CurrentScheduler, - /// Run task on a specific scheduler - ExistingScheduler(Scheduler), /// All tasks run in the same OS thread SingleThreaded, } @@ -588,10 +580,6 @@ pub fn get_task() -> Task { } } -pub fn get_scheduler() -> Scheduler { - SchedulerHandle(unsafe { rt::rust_get_sched_id() }) -} - /** * Temporarily make the task unkillable * diff --git a/src/libstd/task/spawn.rs b/src/libstd/task/spawn.rs index 1e4d781c5d2..58b442b7953 100644 --- a/src/libstd/task/spawn.rs +++ b/src/libstd/task/spawn.rs @@ -86,7 +86,6 @@ use task::rt::rust_task; use task::rt; use task::{Failure, SchedOpts, SingleThreaded}; use task::{Success, TaskOpts, TaskResult}; -use task::{ExistingScheduler, SchedulerHandle}; use task::unkillable; use to_bytes::IterBytes; use uint; @@ -807,15 +806,13 @@ fn spawn_raw_oldsched(mut opts: TaskOpts, f: ~fn()) { let num_threads = match opts.mode { DefaultScheduler - | CurrentScheduler - | ExistingScheduler(*) => 0u, /* Won't be used */ + | CurrentScheduler => 0u, /* Won't be used */ SingleThreaded => 1u, }; unsafe { let sched_id = match opts.mode { CurrentScheduler => rt::rust_get_sched_id(), - ExistingScheduler(SchedulerHandle(id)) => id, _ => rt::rust_new_sched(num_threads) }; rt::rust_new_task_in_sched(sched_id) -- cgit 1.4.1-3-g733a5 From 81dda9d9cb5a8e472509c6f335acc81083d74b91 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Mon, 29 Jul 2013 12:16:30 -0700 Subject: std: Remove CurrentScheduler spawn mode. Unused --- src/libstd/task/mod.rs | 2 -- src/libstd/task/spawn.rs | 13 ++----------- 2 files changed, 2 insertions(+), 13 deletions(-) (limited to 'src/libstd/task') diff --git a/src/libstd/task/mod.rs b/src/libstd/task/mod.rs index d9e119e2d2c..7dec63aef58 100644 --- a/src/libstd/task/mod.rs +++ b/src/libstd/task/mod.rs @@ -86,8 +86,6 @@ pub enum TaskResult { pub enum SchedMode { /// Run task on the default scheduler DefaultScheduler, - /// Run task on the current scheduler - CurrentScheduler, /// All tasks run in the same OS thread SingleThreaded, } diff --git a/src/libstd/task/spawn.rs b/src/libstd/task/spawn.rs index 58b442b7953..1d183e7dabb 100644 --- a/src/libstd/task/spawn.rs +++ b/src/libstd/task/spawn.rs @@ -84,7 +84,7 @@ use local_data; use task::local_data_priv::{local_get, local_set, OldHandle}; use task::rt::rust_task; use task::rt; -use task::{Failure, SchedOpts, SingleThreaded}; +use task::{Failure, SchedOpts}; use task::{Success, TaskOpts, TaskResult}; use task::unkillable; use to_bytes::IterBytes; @@ -804,17 +804,8 @@ fn spawn_raw_oldsched(mut opts: TaskOpts, f: ~fn()) { fail!("foreign_stack_size scheduler option unimplemented"); } - let num_threads = match opts.mode { - DefaultScheduler - | CurrentScheduler => 0u, /* Won't be used */ - SingleThreaded => 1u, - }; - unsafe { - let sched_id = match opts.mode { - CurrentScheduler => rt::rust_get_sched_id(), - _ => rt::rust_new_sched(num_threads) - }; + let sched_id = rt::rust_new_sched(1); rt::rust_new_task_in_sched(sched_id) } } -- cgit 1.4.1-3-g733a5 From 8f835d42d7f7090ab6408a9aa6316a0f8f21f3f3 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Mon, 29 Jul 2013 12:51:55 -0700 Subject: std: Remove get_task function. Unused --- src/libstd/task/mod.rs | 15 --------------- src/test/compile-fail/fully-qualified-type-name4.rs | 6 +++--- src/test/run-pass/issue-2718.rs | 9 ++++++--- src/test/run-pass/task-killjoin-rsrc.rs | 8 ++++---- 4 files changed, 13 insertions(+), 25 deletions(-) (limited to 'src/libstd/task') diff --git a/src/libstd/task/mod.rs b/src/libstd/task/mod.rs index 7dec63aef58..5673e100625 100644 --- a/src/libstd/task/mod.rs +++ b/src/libstd/task/mod.rs @@ -44,7 +44,6 @@ use result::Result; use result; use rt::{context, OldTaskContext, TaskContext}; use rt::local::Local; -use task::rt::task_id; use unstable::finally::Finally; use util; @@ -58,12 +57,6 @@ mod local_data_priv; pub mod rt; pub mod spawn; -/// A handle to a task -#[deriving(Eq)] -pub enum Task { - TaskHandle(task_id) -} - /** * Indicates the manner in which a task exited. * @@ -570,14 +563,6 @@ pub fn failing() -> bool { } } -pub fn get_task() -> Task { - //! Get a handle to the running task - - unsafe { - TaskHandle(rt::get_task_id()) - } -} - /** * Temporarily make the task unkillable * diff --git a/src/test/compile-fail/fully-qualified-type-name4.rs b/src/test/compile-fail/fully-qualified-type-name4.rs index f49eb5ee85a..6e7ba16ac0b 100644 --- a/src/test/compile-fail/fully-qualified-type-name4.rs +++ b/src/test/compile-fail/fully-qualified-type-name4.rs @@ -10,11 +10,11 @@ // Test that we use fully-qualified type names in error messages. -use std::task::Task; +use std::option::Option; -fn bar(x: uint) -> Task { +fn bar(x: uint) -> Option { return x; - //~^ ERROR mismatched types: expected `std::task::Task` + //~^ ERROR mismatched types: expected `std::option::Option` } fn main() { diff --git a/src/test/run-pass/issue-2718.rs b/src/test/run-pass/issue-2718.rs index 14915555889..fbd06c5e9ce 100644 --- a/src/test/run-pass/issue-2718.rs +++ b/src/test/run-pass/issue-2718.rs @@ -12,8 +12,11 @@ use std::util; +pub type Task = int; + // tjc: I don't know why pub mod pipes { + use super::Task; use std::cast::{forget, transmute}; use std::cast; use std::task; @@ -21,7 +24,7 @@ pub mod pipes { pub struct Stuff { state: state, - blocked_task: Option, + blocked_task: Option, payload: Option } @@ -35,7 +38,7 @@ pub mod pipes { pub struct packet { state: state, - blocked_task: Option, + blocked_task: Option, payload: Option } @@ -43,7 +46,7 @@ pub mod pipes { unsafe { let p: *packet = cast::transmute(~Stuff{ state: empty, - blocked_task: None::, + blocked_task: None::, payload: None:: }); p diff --git a/src/test/run-pass/task-killjoin-rsrc.rs b/src/test/run-pass/task-killjoin-rsrc.rs index aa37f5e9ce9..c811e548f3f 100644 --- a/src/test/run-pass/task-killjoin-rsrc.rs +++ b/src/test/run-pass/task-killjoin-rsrc.rs @@ -27,7 +27,7 @@ impl Drop for notify { fn drop(&self) { unsafe { error!("notify: task=%? v=%x unwinding=%b b=%b", - task::get_task(), + 0, ptr::to_unsafe_ptr(&(*(self.v))) as uint, task::failing(), *(self.v)); @@ -48,7 +48,7 @@ fn joinable(f: ~fn()) -> Port { fn wrapper(c: Chan, f: &fn()) { let b = @mut false; error!("wrapper: task=%? allocated v=%x", - task::get_task(), + 0, ptr::to_unsafe_ptr(&(*b)) as uint); let _r = notify(c, b); f(); @@ -71,13 +71,13 @@ fn supervised() { // Yield to make sure the supervisor joins before we // fail. This is currently not needed because the supervisor // runs first, but I can imagine that changing. - error!("supervised task=%?", task::get_task); + error!("supervised task=%?", 0); task::yield(); fail!(); } fn supervisor() { - error!("supervisor task=%?", task::get_task()); + error!("supervisor task=%?", 0); let t = joinable(supervised); join(t); } -- cgit 1.4.1-3-g733a5 From 33df9fc1d04c224a0c7ecb8d91b75feed75b412c Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Mon, 29 Jul 2013 13:11:05 -0700 Subject: std: Remove foreign_stack_size spawn option. Irrelevant to future FFI changes --- src/libstd/task/mod.rs | 9 --------- src/libstd/task/spawn.rs | 10 +++------- 2 files changed, 3 insertions(+), 16 deletions(-) (limited to 'src/libstd/task') diff --git a/src/libstd/task/mod.rs b/src/libstd/task/mod.rs index 5673e100625..895de843061 100644 --- a/src/libstd/task/mod.rs +++ b/src/libstd/task/mod.rs @@ -90,17 +90,9 @@ pub enum SchedMode { * * * sched_mode - The operating mode of the scheduler * - * * foreign_stack_size - The size of the foreign stack, in bytes - * - * Rust code runs on Rust-specific stacks. When Rust code calls foreign - * code (via functions in foreign modules) it switches to a typical, large - * stack appropriate for running code written in languages like C. By - * default these foreign stacks have unspecified size, but with this - * option their size can be precisely specified. */ pub struct SchedOpts { mode: SchedMode, - foreign_stack_size: Option, } /** @@ -418,7 +410,6 @@ pub fn default_task_opts() -> TaskOpts { notify_chan: None, sched: SchedOpts { mode: DefaultScheduler, - foreign_stack_size: None } } } diff --git a/src/libstd/task/spawn.rs b/src/libstd/task/spawn.rs index 1d183e7dabb..a698f1342f0 100644 --- a/src/libstd/task/spawn.rs +++ b/src/libstd/task/spawn.rs @@ -84,7 +84,7 @@ use local_data; use task::local_data_priv::{local_get, local_set, OldHandle}; use task::rt::rust_task; use task::rt; -use task::{Failure, SchedOpts}; +use task::{Failure}; use task::{Success, TaskOpts, TaskResult}; use task::unkillable; use to_bytes::IterBytes; @@ -741,7 +741,7 @@ fn spawn_raw_oldsched(mut opts: TaskOpts, f: ~fn()) { // Create child task. let new_task = match opts.sched.mode { DefaultScheduler => rt::new_task(), - _ => new_task_in_sched(opts.sched) + _ => new_task_in_sched() }; assert!(!new_task.is_null()); // Getting killed after here would leak the task. @@ -799,11 +799,7 @@ fn spawn_raw_oldsched(mut opts: TaskOpts, f: ~fn()) { return result; } - fn new_task_in_sched(opts: SchedOpts) -> *rust_task { - if opts.foreign_stack_size != None { - fail!("foreign_stack_size scheduler option unimplemented"); - } - + fn new_task_in_sched() -> *rust_task { unsafe { let sched_id = rt::rust_new_sched(1); rt::rust_new_task_in_sched(sched_id) -- cgit 1.4.1-3-g733a5