rt: Use an enum to represent the task state

This commit is contained in:
Brian Anderson
2012-03-17 18:12:15 -07:00
parent 0201a03203
commit 05466c6138
4 changed files with 58 additions and 32 deletions

View File

@@ -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();