libcore: add a task::set_sched_mode fn

This commit is contained in:
Erick Tryzelaar
2012-07-10 08:45:08 -07:00
parent 75db80e233
commit 1972ae23e5
4 changed files with 21 additions and 42 deletions

View File

@@ -38,6 +38,7 @@ export builder;
export default_task_opts;
export get_opts;
export set_opts;
export set_sched_mode;
export add_wrapper;
export run;
@@ -237,6 +238,16 @@ fn set_opts(builder: builder, opts: task_opts) {
builder.opts = opts;
}
fn set_sched_mode(builder: builder, mode: sched_mode) {
set_opts(builder, {
sched: some({
mode: mode,
foreign_stack_size: none
})
with get_opts(builder)
});
}
fn add_wrapper(builder: builder, gen_body: fn@(+fn~()) -> fn~()) {
/*!
* Add a wrapper to the body of the spawned task.
@@ -467,13 +478,7 @@ fn spawn_sched(mode: sched_mode, +f: fn~()) {
*/
let mut builder = builder();
set_opts(builder, {
sched: some({
mode: mode,
foreign_stack_size: none
})
with get_opts(builder)
});
set_sched_mode(builder, mode);
run(builder, f);
}
@@ -1207,14 +1212,7 @@ fn test_avoid_copying_the_body_unsupervise() {
#[test]
fn test_osmain() {
let buildr = builder();
let opts = {
sched: some({
mode: osmain,
foreign_stack_size: none
})
with get_opts(buildr)
};
set_opts(buildr, opts);
set_sched_mode(buildr, mode);
let po = comm::port();
let ch = comm::chan(po);