Nucleus
Barry Kernel threads + threads share address space 6217f0d (3 years, 1 month ago)
diff --git a/include/nucleus/task.h b/include/nucleus/task.h
index f7825a8..8c33f55 100644
--- a/include/nucleus/task.h
+++ b/include/nucleus/task.h
@@ -31,21 +31,19 @@ enum State {
/* Structure for a Task */
struct Task {
Object obj;
- pid_t tid, tgid;
- uid_t uid, euid, suid;
- gid_t gid, egid, sgid;
- int status;
- uint32_t inSyscall;
-
Scheduler *scheduler;
enum Priority priority;
enum State state;
uintptr_t esi, edi, ebx;
uintptr_t esp, ebp, eip;
- page_dir_t pageDir;
+
+ pid_t tid, tgid;
+ uid_t uid, euid, suid;
+ gid_t gid, egid, sgid;
+ int status;
+ uint32_t inSyscall;
File *executable;
- VMRegion *stack;
Task *target;
ObjectList *wait;
@@ -68,6 +66,8 @@ struct Scheduler {
#define current cpu->scheduler->task
+#define KERNEL_STACK_SIZE (2 * PAGE_SIZE)
+
extern ObjectType taskType;
extern ObjectType schedulerType;
extern ObjectType signalsType;
@@ -95,10 +95,12 @@ exit_syscall_context(void)
}
void init_tasking(void);
-void enqueue_task(Task *task);
void block_task(enum State reason, ObjectList *list);
void unblock_task(Task *task);
Task *find_task(pid_t tid);
+void enqueue_task(Task *task);
void schedule(void);
+Task *create_kthread(void (*func)(void), enum Priority p);
+_Noreturn void terminate(void);
#endif