auto merge of #8299 : brson/rust/yet-more-newsched-fixes, r=brson
This commit is contained in:
commit
4fdd720421
3 changed files with 20 additions and 15 deletions
|
|
@ -85,16 +85,6 @@ pub fn log_type<T>(level: u32, object: &T) {
|
|||
fn newsched_log_str(msg: ~str) {
|
||||
use rt::task::Task;
|
||||
use rt::local::Local;
|
||||
use str::StrSlice;
|
||||
use container::Container;
|
||||
|
||||
// Truncate the string
|
||||
let buf_bytes = 256;
|
||||
let msg = if msg.len() > buf_bytes {
|
||||
msg.slice(0, buf_bytes) + "[...]"
|
||||
} else {
|
||||
msg
|
||||
};
|
||||
|
||||
unsafe {
|
||||
match Local::try_unsafe_borrow::<Task>() {
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
|
||||
use either::*;
|
||||
use libc;
|
||||
use str::StrSlice;
|
||||
|
||||
pub trait Logger {
|
||||
fn log(&mut self, msg: Either<~str, &'static str>);
|
||||
|
|
@ -35,10 +36,22 @@ impl Logger for StdErrLogger {
|
|||
s
|
||||
}
|
||||
};
|
||||
let dbg = ::libc::STDERR_FILENO as ::io::fd_t;
|
||||
dbg.write_str(s);
|
||||
dbg.write_str("\n");
|
||||
dbg.flush();
|
||||
|
||||
// Truncate the string
|
||||
let buf_bytes = 256;
|
||||
if s.len() > buf_bytes {
|
||||
let s = s.slice(0, buf_bytes) + "[...]";
|
||||
print(s);
|
||||
} else {
|
||||
print(s)
|
||||
};
|
||||
|
||||
fn print(s: &str) {
|
||||
let dbg = ::libc::STDERR_FILENO as ::io::fd_t;
|
||||
dbg.write_str(s);
|
||||
dbg.write_str("\n");
|
||||
dbg.flush();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -339,8 +339,8 @@ impl Scheduler {
|
|||
let mut this = self;
|
||||
match this.message_queue.pop() {
|
||||
Some(PinnedTask(task)) => {
|
||||
let mut task = task;
|
||||
this.event_loop.callback(Scheduler::run_sched_once);
|
||||
let mut task = task;
|
||||
task.give_home(Sched(this.make_handle()));
|
||||
this.resume_task_immediately(task);
|
||||
return None;
|
||||
|
|
@ -351,10 +351,12 @@ impl Scheduler {
|
|||
return this.sched_schedule_task(task);
|
||||
}
|
||||
Some(Wake) => {
|
||||
this.event_loop.callback(Scheduler::run_sched_once);
|
||||
this.sleepy = false;
|
||||
return Some(this);
|
||||
}
|
||||
Some(Shutdown) => {
|
||||
this.event_loop.callback(Scheduler::run_sched_once);
|
||||
if this.sleepy {
|
||||
// There may be an outstanding handle on the
|
||||
// sleeper list. Pop them all to make sure that's
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue