Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
Loading...
Searching...
No Matches
task.c
Go to the documentation of this file.
1// #include "task.h"
2// #include <libk/serial.h>
3// #include <type.h>
4// #include <memory/memory_utils.h>
5// #include <memory/phys_base_allocator.h>
6
7// static struct task* g__task = 0;
8// static pid_t g__curr_pid = 1;
9
10// void task_initialize() {
11// }
12
13// struct task* task_get_current() {
14// return g__task;
15// }
16
17// void task_add(char* name, uintptr_t entry, task_state_t state,
18// task_priority_t priority, page_t page_root, uintptr_t stack,
19// struct program_paramater param) {
20// struct task* task = (struct task*) vxPhysBaseAlloc(1);
21// serial_trace("task address : 0x%x\n", task);
22// task->name = name;
23// task->state = state;
24// task->priority = priority;
25// task->page_root = page_root;
26// task->stack = stack;
27// task->entry = entry;
28// task->pid = g__curr_pid++;
29// task->next = NULL;
30// task->param = param;
31// serial_trace("task pid %d\n", task->pid);
32
33// struct task* current = g__task;
34// if (current == 0) {
35// g__task = task;
36// // serial_trace("task added %s\n", task->name);
37// return;
38// }
39
40// // serial_trace("head task address : 0x%x\n", current);
41// while (current->next != 0) {
42// current = current->next;
43// }
44// current->next = task;
45// // serial_trace("task added %s\n", task->name);
46// }
47
48// struct task* task_get(pid_t pid) {
49// struct task* current = g__task;
50// while (current != 0 && current->pid != pid) {
51// current = current->next;
52// }
53// return current;
54// }
55
56// void task_free(pid_t pid) {
57// struct task* current = g__task;
58// struct task* prev = NULL;
59// while (current != 0 && current->pid != pid) {
60// prev = current;
61// current = current->next;
62// }
63// prev->next = current->next;
64
65// // TODO: freeing memory has been allocated for loading
66// vxPhysBaseFree(current, 1);
67// }