extra: Make test runner compatible with newsched
This commit is contained in:
parent
d071f51cdc
commit
e65d0cbabe
4 changed files with 18 additions and 23 deletions
|
|
@ -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)]
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue