about summary refs log tree commit diff
path: root/src/rt/rust_task_thread.h
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-03-17 18:12:15 -0700
committerBrian Anderson <banderson@mozilla.com>2012-03-18 17:41:56 -0700
commit05466c61380366cfd1969bb9f4eb26cff2acaedd (patch)
treebb3df337ad668f24337fbf586861d2decbcee4c7 /src/rt/rust_task_thread.h
parent0201a03203b1961c96499c20025bf752a1b3ea6a (diff)
downloadrust-05466c61380366cfd1969bb9f4eb26cff2acaedd.tar.gz
rust-05466c61380366cfd1969bb9f4eb26cff2acaedd.zip
rt: Use an enum to represent the task state
Diffstat (limited to 'src/rt/rust_task_thread.h')
-rw-r--r--src/rt/rust_task_thread.h22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/rt/rust_task_thread.h b/src/rt/rust_task_thread.h
index 20f37ab7bcc..190b3656cc5 100644
--- a/src/rt/rust_task_thread.h
+++ b/src/rt/rust_task_thread.h
@@ -1,6 +1,7 @@
 #ifndef RUST_TASK_THREAD_H
 #define RUST_TASK_THREAD_H
 
+#include "rust_internal.h"
 #include "sync/rust_thread.h"
 #include "rust_stack.h"
 #include "context.h"
@@ -11,6 +12,13 @@
 #include <windows.h>
 #endif
 
+enum rust_task_state {
+    task_state_newborn,
+    task_state_running,
+    task_state_blocked,
+    task_state_dead
+};
+
 struct rust_task_thread : public kernel_owned<rust_task_thread>,
                         rust_thread
 {
@@ -37,19 +45,21 @@ private:
     stk_seg *cached_c_stack;
     stk_seg *extra_c_stack;
 
+    rust_task_list newborn_tasks;
+    rust_task_list running_tasks;
+    rust_task_list blocked_tasks;
+    rust_task_list dead_tasks;
+
     void prepare_c_stack(rust_task *task);
     void unprepare_c_stack();
 
+    rust_task_list *state_list(rust_task_state state);
+
 public:
     rust_kernel *kernel;
     rust_scheduler *sched;
     rust_srv *srv;
 
-    rust_task_list newborn_tasks;
-    rust_task_list running_tasks;
-    rust_task_list blocked_tasks;
-    rust_task_list dead_tasks;
-
     // NB: this is used to filter *runtime-originating* debug
     // logging, on a per-scheduler basis. It's not likely what
     // you want to expose to the user in terms of per-task
@@ -90,7 +100,7 @@ public:
                            size_t init_stack_sz);
 
     void transition(rust_task *task,
-                    rust_task_list *src, rust_task_list *dst,
+                    rust_task_state src, rust_task_state dst,
                     rust_cond *cond, const char* cond_name);
 
     virtual void run();