blob: e70fd6d8ce0ec597f8b5ea04445015518601a9fd [file] [log] [blame]
swissChilie20b79b2021-03-17 21:20:13 -07001#pragma once
2
3#include "kint.h"
swissChilie9289ee2021-03-20 21:54:28 -07004#include "registers.h"
swissChilie20b79b2021-03-17 21:20:13 -07005
swissChilie9289ee2021-03-20 21:54:28 -07006struct process
7{
8 bool exists;
9 int id;
10 int ring;
11 int uid;
12 char name[32];
13};
14
15struct task
16{
17 int id;
18 struct process *proc;
19 uint stack_top_p; // stack frame PHYSICAL address
20 uint esp, ebp, eip;
21 uint *page_directory;
22 bool kernel;
23};
24
25struct ll_task_i
26{
27 struct ll_task_i *next;
28 struct task task;
29};
30
31// extern struct process processes[1024];
32// extern struct ll_task_i *first_task, *current_task;
33
34void init_tasks(uint kernel_esp, uint kernel_ebp, uint kernel_eip);
35struct process *get_process(uint pid);
36
37int get_process_id();
38int get_task_id();
39
40// For compatibility I guess
41#define getpid get_process_id
42
43void spawn_thread(void (* function)(void *data), void *data);