blob: 3d27850de31a0a325386c1006f2a44e9ae1f4f3b [file] [log] [blame]
swissChilie20b79b2021-03-17 21:20:13 -07001#include "task.h"
2#include "alloc.h"
3#include "io.h"
4#include "paging.h"
5
swissChilie9289ee2021-03-20 21:54:28 -07006struct process processes[1024] = {0};
7struct ll_task_i *first_task = NULL, *last_task = NULL, *current_task = NULL;
8
9void init_tasks(uint kernel_esp, uint kernel_ebp, uint kernel_eip)
swissChilie20b79b2021-03-17 21:20:13 -070010{
swissChilie9289ee2021-03-20 21:54:28 -070011 asm volatile("cli");
swissChilie20b79b2021-03-17 21:20:13 -070012
swissChilie9289ee2021-03-20 21:54:28 -070013 processes[0] = (struct process){
14 .exists = true,
15 .id = 0,
16 .ring = 0,
17 .uid = 0,
18 };
19 strcpy(processes[0].name, "kernel");
swissChilie20b79b2021-03-17 21:20:13 -070020
swissChilie9289ee2021-03-20 21:54:28 -070021 first_task = last_task = current_task = malloc(sizeof(struct ll_task_i));
swissChilie20b79b2021-03-17 21:20:13 -070022
swissChilie9289ee2021-03-20 21:54:28 -070023 first_task->next = NULL;
24 first_task->task = (struct task){
25 .proc = &processes[0],
26 .esp = kernel_esp,
27 .ebp = kernel_ebp,
28 .eip = kernel_eip,
29 .kernel = true,
30 .page_directory = kernel_page_directory,
31 };
swissChilie20b79b2021-03-17 21:20:13 -070032
swissChilie9289ee2021-03-20 21:54:28 -070033 asm volatile("sti");
swissChilie20b79b2021-03-17 21:20:13 -070034}
35
swissChilie9289ee2021-03-20 21:54:28 -070036struct process *get_process(uint pid)
swissChilie20b79b2021-03-17 21:20:13 -070037{
swissChilie9289ee2021-03-20 21:54:28 -070038 if (pid < 1024)
39 return &processes[pid];
40 else
41 return NULL;
42}
swissChilie20b79b2021-03-17 21:20:13 -070043
swissChilie9289ee2021-03-20 21:54:28 -070044int get_task_id()
45{
46 return current_task->task.id;
47}
swissChilie20b79b2021-03-17 21:20:13 -070048
swissChilie9289ee2021-03-20 21:54:28 -070049int get_process_id()
50{
51 return current_task->task.proc->id;
52}
53
54void spawn_thread(void (* function)(void *data), void *data)
55{
56
swissChilie20b79b2021-03-17 21:20:13 -070057}