BarryServer : Git

All the code for all my projects
// BarryServer : Git / Nucleus / commit / 6217f0db2c8f2513994f4cc773aaa4171a049963 / include / nucleus / task.h

// Related

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