Proper locking with blocked_on()/wakeup() in rust_port. Closes #2787. Closes #1923.

This commit is contained in:
Ben Blum
2012-07-11 20:00:58 -04:00
parent b897696a3a
commit 343e9de8ef
5 changed files with 24 additions and 22 deletions

View File

@@ -243,7 +243,7 @@ rust_task::must_fail_from_being_killed_inner() {
// Only run this on the rust stack
void
rust_task::yield(bool *killed) {
// FIXME (#2787): clean this up
// FIXME (#2875): clean this up
if (must_fail_from_being_killed()) {
{
scoped_lock with(lifecycle_lock);
@@ -346,12 +346,11 @@ void rust_task::assert_is_running()
assert(state == task_state_running);
}
// FIXME (#2851, #2787): This is only used by rust_port/rust_port selector,
// and is inherently racy. Get rid of it.
// FIXME (#2851) Remove this code when rust_port goes away?
bool
rust_task::blocked_on(rust_cond *on)
{
scoped_lock with(lifecycle_lock);
lifecycle_lock.must_have_lock();
return cond == on;
}