Skip to content

Thread Enumerations and Types

include/thread/thread_types.h View source View on GitHub
enum thread_state : uint8_t {
    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 : uint8_t {
    THREAD_WAIT_NONE,
    THREAD_WAIT_UNINTERRUPTIBLE,
    THREAD_WAIT_INTERRUPTIBLE,
};
enum thread_flags : uint32_t {
    THREAD_FLAG_PINNED = 1,
    THREAD_FLAG_FLEXIBLE_RT = 1 << 1,
    THREAD_FLAG_EXECUTING_APC = 1 << 2,
    THREAD_FLAG_DYING = 1 << 3,
    THREAD_FLAG_YIELDED = 1 << 4,
    THREAD_FLAG_WAKE_MATCHED = 1 << 5,
    THREAD_FLAG_RT_FAULT_TOLERANCE = 1 << 6,
};
enum thread_prio_class : uint8_t {
    THREAD_PRIO_CLASS_BACKGROUND = 0,
    THREAD_PRIO_CLASS_TIMESHARE = 1,
    THREAD_PRIO_CLASS_RT = 2,
    THREAD_PRIO_CLASS_URGENT = 3,
};
enum thread_wake_reason : uint8_t {
    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 : uint8_t {
    THREAD_BLOCK_REASON_IO = 5,
    THREAD_BLOCK_REASON_MANUAL = 6,
};
enum thread_sleep_reason : uint8_t {
    THREAD_SLEEP_REASON_MANUAL = 7,
};
enum wake_reason {
    WAKE_REASON_NONE = 0,
    WAKE_REASON_SIGNAL = 1,
    WAKE_REASON_TIMEOUT = 2,
};
struct thread * thread_create_internal(char *name, void (*entry_point)(void *), void *arg, size_t stack_size, va_list args);
#define THREAD_STACK_SIZE (PAGE_SIZE * 4)
#define THREAD_PRIO_CLASS_COUNT (4)