extra: Make test runner compatible with newsched

This commit is contained in:
Brian Anderson 2013-06-23 18:22:57 -07:00
parent d071f51cdc
commit e65d0cbabe
4 changed files with 18 additions and 23 deletions

View file

@ -31,14 +31,6 @@ use core::to_str::ToStr;
use core::uint;
use core::vec;
pub mod rustrt {
use core::libc::size_t;
#[abi = "cdecl"]
pub extern {
pub unsafe fn rust_sched_threads() -> size_t;
}
}
// The name of a test. By convention this follows the rules for rust
// paths; i.e. it should be a series of identifiers separated by double
@ -488,11 +480,10 @@ static sched_overcommit : uint = 1;
static sched_overcommit : uint = 4u;
fn get_concurrency() -> uint {
unsafe {
let threads = rustrt::rust_sched_threads() as uint;
if threads == 1 { 1 }
else { threads * sched_overcommit }
}
use core::rt;
let threads = rt::util::default_sched_threads();
if threads == 1 { 1 }
else { threads * sched_overcommit }
}
#[allow(non_implicitly_copyable_typarams)]

View file

@ -63,11 +63,9 @@ Several modules in `core` are clients of `rt`:
use cell::Cell;
use clone::Clone;
use container::Container;
use from_str::FromStr;
use iter::Times;
use iterator::IteratorUtil;
use option::{Some, None};
use os;
use option::Some;
use ptr::RawPtr;
use rt::sched::{Scheduler, Coroutine, Shutdown};
use rt::sleeper_list::SleeperList;
@ -223,10 +221,7 @@ pub fn run(main: ~fn()) -> int {
static DEFAULT_ERROR_CODE: int = 101;
let nthreads = match os::getenv("RUST_THREADS") {
Some(nstr) => FromStr::from_str(nstr).get(),
None => util::num_cpus()
};
let nthreads = util::default_sched_threads();
// The shared list of sleeping schedulers. Schedulers wake each other
// occassionally to do new work.

View file

@ -9,8 +9,11 @@
// except according to those terms.
use container::Container;
use from_str::FromStr;
use iterator::IteratorUtil;
use libc;
use option::{Some, None};
use os;
use str::StrSlice;
/// Get the number of cores available
@ -24,6 +27,15 @@ pub fn num_cpus() -> uint {
}
}
/// Get's the number of scheduler threads requested by the environment
/// either `RUST_THREADS` or `num_cpus`.
pub fn default_sched_threads() -> uint {
match os::getenv("RUST_THREADS") {
Some(nstr) => FromStr::from_str(nstr).get(),
None => num_cpus()
}
}
pub fn dumb_println(s: &str) {
use io::WriterUtil;
let dbg = ::libc::STDERR_FILENO as ::io::fd_t;

View file

@ -23,7 +23,6 @@ mod rustrt {
pub fn rust_get_sched_id() -> libc::intptr_t;
pub fn rust_get_argc() -> libc::c_int;
pub fn get_task_id() -> libc::intptr_t;
pub fn rust_sched_threads();
pub fn rust_get_task();
}
}
@ -31,7 +30,6 @@ mod rustrt {
fn calllink01() { unsafe { rustrt::rust_get_sched_id(); } }
fn calllink02() { unsafe { rustrt::rust_get_argc(); } }
fn calllink08() { unsafe { rustrt::get_task_id(); } }
fn calllink09() { unsafe { rustrt::rust_sched_threads(); } }
fn calllink10() { unsafe { rustrt::rust_get_task(); } }
fn runtest(f: extern fn(), frame_backoff: u32) {
@ -64,7 +62,6 @@ pub fn main() {
calllink01,
calllink02,
calllink08,
calllink09,
calllink10
];
let mut rng = rand::rng();