Skip to content

Thread Enumerations and Types

enum thread_state {
THREAD_STATE_IDLE_THREAD,
THREAD_STATE_READY,
THREAD_STATE_RUNNING,
THREAD_STATE_BLOCKED,
THREAD_STATE_SLEEPING,
THREAD_STATE_ZOMBIE,
THREAD_STATE_TERMINATED,
THREAD_STATE_HALTED,
};
enum thread_wait_type {
THREAD_WAIT_NONE,
THREAD_WAIT_UNINTERRUPTIBLE,
THREAD_WAIT_INTERRUPTIBLE,
};
enum thread_flags {
THREAD_FLAG_FLEXIBLE_RT = 1 << 1,
THREAD_FLAG_EXECUTING_APC = 1 << 2,
THREAD_FLAG_DYING = 1 << 3,
THREAD_FLAG_YIELDED_AFTER_WAKE = 1 << 4,
THREAD_FLAG_WAKE_MATCHED = 1 << 5,
THREAD_FLAG_RT_FAULT_TOLERANCE = 1 << 6,
};
enum thread_prio_class {
THREAD_PRIO_CLASS_BACKGROUND = 0,
THREAD_PRIO_CLASS_TIMESHARE = 1,
THREAD_PRIO_CLASS_RT = 2,
THREAD_PRIO_CLASS_URGENT = 3,
};
enum thread_wake_reason {
THREAD_WAKE_REASON_BLOCKING_IO = 1,
THREAD_WAKE_REASON_BLOCKING_MANUAL = 2,
THREAD_WAKE_REASON_SLEEP_TIMEOUT = 3,
THREAD_WAKE_REASON_SLEEP_MANUAL = 4,
};
enum thread_block_reason {
THREAD_BLOCK_REASON_IO = 5,
THREAD_BLOCK_REASON_MANUAL = 6,
};
enum thread_sleep_reason {
THREAD_SLEEP_REASON_MANUAL = 7,
};
enum wake_reason {
WAKE_REASON_NONE = 0,
WAKE_REASON_SIGNAL = 1,
WAKE_REASON_TIMEOUT = 2,
};
#define THREAD_STACK_SIZE (PAGE_SIZE * 4)
#define THREAD_PRIO_CLASS_COUNT (4)