Skip to content

Commit e0e9e45

Browse files
committed
Convert os/priv/uv to new task_builder interface
1 parent c7a6a66 commit e0e9e45

File tree

4 files changed

+17
-24
lines changed

4 files changed

+17
-24
lines changed

src/libcore/os.rs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import option::{some, none};
2424

2525
import getcwd = rustrt::rust_getcwd;
2626
import consts::*;
27+
import task::task_builder;
2728

2829
export close, fclose, fsync_fd, waitpid;
2930
export env, getenv, setenv, fdopen, pipe;
@@ -160,19 +161,14 @@ mod global_env {
160161

161162
fn get_global_env_chan() -> comm::chan<msg> {
162163
let global_ptr = rustrt::rust_global_env_chan_ptr();
163-
let builder_fn = || {
164-
let builder = task::builder();
165-
task::unsupervise(builder);
166-
164+
let task_build_fn = || {
167165
// FIXME (#2621): This would be a good place to use a very small
168166
// foreign stack
169-
task::set_sched_mode(builder, task::single_threaded);
170-
171-
builder
167+
task::task().sched_mode(task::single_threaded).unlinked()
172168
};
173169
unsafe {
174170
priv::chan_from_global_ptr(
175-
global_ptr, builder_fn, global_env_task)
171+
global_ptr, task_build_fn, global_env_task)
176172
}
177173
}
178174

src/libcore/priv.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
export chan_from_global_ptr, weaken_task;
44

55
import compare_and_swap = rustrt::rust_compare_and_swap_ptr;
6+
import task::task_builder;
67

78
type rust_port_id = uint;
89

@@ -23,7 +24,7 @@ type global_ptr = *libc::uintptr_t;
2324
*/
2425
unsafe fn chan_from_global_ptr<T: send>(
2526
global: global_ptr,
26-
builder: fn() -> task::builder,
27+
task_fn: fn() -> task::task_builder,
2728
+f: fn~(comm::port<T>)
2829
) -> comm::chan<T> {
2930

@@ -41,7 +42,7 @@ unsafe fn chan_from_global_ptr<T: send>(
4142
4243
let setup_po = comm::port();
4344
let setup_ch = comm::chan(setup_po);
44-
let setup_ch = do task::run_listener(builder()) |setup_po| {
45+
let setup_ch = do task_fn().spawn_listener |setup_po| {
4546
let po = comm::port::<T>();
4647
let ch = comm::chan(po);
4748
comm::send(setup_ch, ch);
@@ -92,7 +93,7 @@ fn test_from_global_chan1() {
9293

9394
// Create the global channel, attached to a new task
9495
let ch = unsafe {
95-
do chan_from_global_ptr(globchanp, task::builder) |po| {
96+
do chan_from_global_ptr(globchanp, task::task) |po| {
9697
let ch = comm::recv(po);
9798
comm::send(ch, true);
9899
let ch = comm::recv(po);
@@ -106,7 +107,7 @@ fn test_from_global_chan1() {
106107

107108
// This one just reuses the previous channel
108109
let ch = unsafe {
109-
do chan_from_global_ptr(globchanp, task::builder) |po| {
110+
do chan_from_global_ptr(globchanp, task::task) |po| {
110111
let ch = comm::recv(po);
111112
comm::send(ch, false);
112113
}
@@ -135,7 +136,7 @@ fn test_from_global_chan2() {
135136
do task::spawn {
136137
let ch = unsafe {
137138
do chan_from_global_ptr(
138-
globchanp, task::builder) |po| {
139+
globchanp, task::task) |po| {
139140

140141
for uint::range(0u, 10u) |_j| {
141142
let ch = comm::recv(po);

src/libstd/uv_global_loop.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import get_gl = get;
88
import iotask::{iotask, spawn_iotask};
99
import priv::{chan_from_global_ptr, weaken_task};
1010
import comm::{port, chan, methods, select2, listen};
11+
import task::task_builder;
1112
import either::{left, right};
1213

1314
extern mod rustrt {
@@ -39,10 +40,7 @@ fn get_monitor_task_gl() -> iotask unsafe {
3940
monitor_loop_chan_ptr);
4041

4142
let builder_fn = || {
42-
let builder = task::builder();
43-
task::unsupervise(builder);
44-
task::set_sched_mode(builder, task::single_threaded);
45-
builder
43+
task::task().sched_mode(task::single_threaded).unlinked()
4644
};
4745

4846
#debug("before priv::chan_from_global_ptr");
@@ -86,8 +84,7 @@ fn get_monitor_task_gl() -> iotask unsafe {
8684
}
8785

8886
fn spawn_loop() -> iotask unsafe {
89-
let builder = task::builder();
90-
do task::add_wrapper(builder) |task_body| {
87+
let builder = do task::task().add_wrapper |task_body| {
9188
fn~(move task_body) {
9289
// The I/O loop task also needs to be weak so it doesn't keep
9390
// the runtime alive
@@ -102,7 +99,7 @@ fn spawn_loop() -> iotask unsafe {
10299
#debug("global libuv task is leaving weakened state");
103100
}
104101
}
105-
}
102+
};
106103
spawn_iotask(builder)
107104
}
108105

src/libstd/uv_iotask.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export exit;
1313
import libc::c_void;
1414
import ptr::addr_of;
1515
import comm::{port, chan, methods, listen};
16+
import task::task_builder;
1617
import ll = uv_ll;
1718

1819
/// Used to abstract-away direct interaction with a libuv loop.
@@ -23,13 +24,11 @@ enum iotask {
2324
})
2425
}
2526

26-
fn spawn_iotask(-builder: task::builder) -> iotask {
27-
28-
task::set_sched_mode(builder, task::single_threaded);
27+
fn spawn_iotask(-task: task::task_builder) -> iotask {
2928

3029
do listen |iotask_ch| {
3130

32-
do task::run(copy(builder)) {
31+
do task.sched_mode(task::single_threaded).spawn {
3332
#debug("entering libuv task");
3433
run_loop(iotask_ch);
3534
#debug("libuv task exiting");

0 commit comments

Comments
 (0)