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