blob: 346630a8ab6beb5fbdfe37cd7c038a62a084646c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#pragma once
#include <stdint.h>
enum kc_thread_status
{
READY,
STARTED,
YIELDED,
BLOCKED,
TERMINATED
};
struct kc_thread_state
{
uint64_t stack;
uint64_t stack_top;
uint64_t page_map;
};
struct kc_thread
{
struct kc_thread *prev;
struct kc_thread *next;
uint64_t time_elapsed;
enum kc_thread_status status;
struct kc_thread_state state;
};
extern void cpu_set_thread(
struct kc_thread_state *current,
struct kc_thread_state *next,
uint64_t *cpu_tss_rsp0);
void task_init(void);
|