summaryrefslogtreecommitdiff
path: root/src/Task.cc
diff options
context:
space:
mode:
authorPixel <pixel@nobis-crew.org>2011-10-17 21:17:31 -0700
committerPixel <pixel@nobis-crew.org>2011-10-17 21:17:31 -0700
commitbc4f9afa3e19fc7f7b9fd642bf6bf170b319f5f7 (patch)
treeae5e530743accc91fa87cc351b2108fbc47aaebb /src/Task.cc
parent1e0ba312edbe0feea88737380ef1a71782779437 (diff)
Removing the 'non-preemptible' madness before it could even be used.
Diffstat (limited to 'src/Task.cc')
-rw-r--r--src/Task.cc35
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() {