42_KFS/headers/task.h

36 lines
605 B
C
Raw Normal View History

#pragma once
#include "list.h"
#include "memory.h"
#include "types.h"
#include <stdint.h>
extern struct task *current_task;
enum status { ZOMBIE, THREAD, RUN };
enum owner { OWNER_KERNEL, OWNER_USER };
#define STACK_SIZE PAGE_SIZE * 4
struct task {
u32 *esp;
u32 *esp0;
u32 *cr3; // physical
u32 *heap; // virtual
u32 *eip;
u16 pid;
u8 status;
u8 uid;
struct task *daddy;
struct task *child;
struct list **signals;
struct task *next;
struct task *prev;
};
void scheduler(void);
void switch_to_task(struct task *next_task);
void exec_fn(void (*fn)(void));
i8 create_kernel_task(void);