diff options
| author | bors <bors@rust-lang.org> | 2014-04-15 23:36:58 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-04-15 23:36:58 -0700 |
| commit | 349d66af9420eeeeedfc648eb6ec3fd28015d4b3 (patch) | |
| tree | 9789ea9a2b13b61b570bd896fe203a36bc08103c /src/libgreen | |
| parent | 74bd2338eb25d0d165458a09d7aab3d2ecb98c48 (diff) | |
| parent | c18c9284b352f3605553343cd78c7a8eb75b5cd2 (diff) | |
auto merge of #13532 : alexcrichton/rust/rollup, r=alexcrichton
Diffstat (limited to 'src/libgreen')
| -rw-r--r-- | src/libgreen/lib.rs | 40 | ||||
| -rw-r--r-- | src/libgreen/sched.rs | 4 |
2 files changed, 42 insertions, 2 deletions
diff --git a/src/libgreen/lib.rs b/src/libgreen/lib.rs index 820627b6b7d..dd897b9db4b 100644 --- a/src/libgreen/lib.rs +++ b/src/libgreen/lib.rs @@ -144,6 +144,19 @@ //! } //! ``` //! +//! The above code can also be shortened with a macro from libgreen. +//! +//! ``` +//! #![feature(phase)] +//! #[phase(syntax)] extern crate green; +//! +//! green_start!(main) +//! +//! fn main() { +//! // run inside of a green pool +//! } +//! ``` +//! //! # Using a scheduler pool //! //! ```rust @@ -229,6 +242,33 @@ pub mod sleeper_list; pub mod stack; pub mod task; +/// A helper macro for booting a program with libgreen +/// +/// # Example +/// +/// ``` +/// #![feature(phase)] +/// #[phase(syntax)] extern crate green; +/// +/// green_start!(main) +/// +/// fn main() { +/// // running with libgreen +/// } +/// ``` +#[macro_export] +macro_rules! green_start( ($f:ident) => ( + mod __start { + extern crate green; + extern crate rustuv; + + #[start] + fn start(argc: int, argv: **u8) -> int { + green::start(argc, argv, rustuv::event_loop, super::$f) + } + } +) ) + /// Set up a default runtime configuration, given compiler-supplied arguments. /// /// This function will block until the entire pool of M:N schedulers have diff --git a/src/libgreen/sched.rs b/src/libgreen/sched.rs index 1a4db43d6c6..922a5905faf 100644 --- a/src/libgreen/sched.rs +++ b/src/libgreen/sched.rs @@ -1035,10 +1035,10 @@ mod test { fn sched_id() -> uint { let mut task = Local::borrow(None::<Task>); - match task.get().maybe_take_runtime::<GreenTask>() { + match task.maybe_take_runtime::<GreenTask>() { Some(green) => { let ret = green.sched.get_ref().sched_id(); - task.get().put_runtime(green); + task.put_runtime(green); return ret; } None => fail!() |
