BarryServer : Git

All the code for all my projects
// BarryServer : Git / Nucleus / commit / 9d6eb508c283ff07934a3007f68d4f0c933d5430 / include / nucleus

// Related

Nucleus

Barry Signals and small task functions 9d6eb50 (3 years, 2 months ago)
diff --git a/include/nucleus/task.h b/include/nucleus/task.h
index 460f32f..5c3d606 100644
--- a/include/nucleus/task.h
+++ b/include/nucleus/task.h
@@ -9,6 +9,7 @@
 #include <nucleus/vfs.h>
 
 typedef struct Task Task;
+typedef struct Signals Signals;
 
 /* Task priorities */
 enum Priority {
@@ -25,6 +26,7 @@ enum State {
 	RUNNING,
 	READY,
 	TERMINATED,
+	WAITING,
 };
 
 /* Structure for a Task */
@@ -33,21 +35,30 @@ struct Task {
 	pid_t tid, tgid;
 	uid_t uid, euid, suid;
 	gid_t gid, egid, sgid;
+	int status;
 	enum Priority priority;
 	enum State state;
 	uint32_t inCriticalSection;
+	uint8_t inSyscall;
 
 	uintptr_t esi, edi, ebx;
 	uintptr_t esp, ebp, eip;
 	page_dir_t pageDir;
 
+	File *executable;
+	VMRegion *stack;
+	Task *target;
+	ObjectList *wait;
+
 	/* Namespaces */
 	FileSystem *fs;
 	Files *files;
 	VirtualMemory *vm;
+	Signals *signals;
 };
 
 extern ObjectType taskType;
+extern ObjectType signalsType;
 
 extern Task *currentTask[];
 #define current currentTask[CPUID]
@@ -73,7 +84,10 @@ exit_critical_section(void)
 }
 
 void init_tasking(void);
+void block_task(enum State reason, ObjectList *list);
+Task *find_task(pid_t tid);
 void schedule(void);
 pid_t clone(int flags);
+int syscall_handler(int num, uintptr_t args);
 
 #endif