diff options
author | Pixel <pixel@nobis-crew.org> | 2011-10-17 21:17:31 -0700 |
---|---|---|
committer | Pixel <pixel@nobis-crew.org> | 2011-10-17 21:17:31 -0700 |
commit | bc4f9afa3e19fc7f7b9fd642bf6bf170b319f5f7 (patch) | |
tree | ae5e530743accc91fa87cc351b2108fbc47aaebb /src/Task.cc | |
parent | 1e0ba312edbe0feea88737380ef1a71782779437 (diff) |
Removing the 'non-preemptible' madness before it could even be used.
Diffstat (limited to 'src/Task.cc')
-rw-r--r-- | src/Task.cc | 35 |
1 files changed, 6 insertions, 29 deletions
diff --git a/src/Task.cc b/src/Task.cc index 8ad5cb7..202d6ab 100644 --- a/src/Task.cc +++ b/src/Task.cc @@ -21,15 +21,12 @@ Balau::Task::Task() { g_tlsManager->setTLS(oldTLS); m_status = STARTING; - m_loop = NULL; m_okayToEAgain = false; Printer::elog(E_TASK, "Created a Task at %p"); } Balau::Task::~Task() { - if (m_loop) - ev_loop_destroy(m_loop); free(m_stack); free(m_tls); } @@ -65,42 +62,22 @@ void Balau::Task::switchTo() { m_status = IDLE; } -void Balau::Task::yield(bool override) { - if (m_loop && override) { - ev_run(m_loop, 0); - } else { - coro_transfer(&m_ctx, &m_taskMan->m_returnContext); - } +void Balau::Task::yield() { + Printer::elog(E_TASK, "Task %p - %s yielding", this, getName()); + coro_transfer(&m_ctx, &m_taskMan->m_returnContext); } Balau::Task * Balau::Task::getCurrentTask() { return localTask.get(); } -void Balau::Task::waitFor(Balau::Events::BaseEvent * e, bool override) { - struct ev_loop * loop = m_loop; - if (!override) - m_loop = NULL; +void Balau::Task::waitFor(Balau::Events::BaseEvent * e) { + Printer::elog(E_TASK, "Task %p - %s waits for event %p (%s)", this, getName(), e, ClassName(e).c_str()); e->registerOwner(this); - m_loop = loop; -} - -bool Balau::Task::setPreemptible(bool enable) { - bool wasPreemptible = !m_loop; - if (!m_loop && !enable) { - m_loop = ev_loop_new(EVFLAG_AUTO); - } else if (m_loop) { - ev_loop_destroy(m_loop); - m_loop = NULL; - } - return wasPreemptible; } struct ev_loop * Balau::Task::getLoop() { - if (m_loop) - return m_loop; - else - return getTaskMan()->getLoop(); + return getTaskMan()->getLoop(); } void Balau::Events::BaseEvent::doSignal() { |