#ifndef _PROC_H
#define _PROC_H
-#include <threads.h>
-
-// === CONSTANTS ===
-#define GETMSG_IGNORE ((void*)-1)
-
-// === TYPES ===
-#if USE_MP
-typedef struct sCPU
-{
- Uint8 APICID;
- Uint8 State; // 0: Unavaliable, 1: Idle, 2: Active
- Uint16 Resvd;
- tThread *Current;
-} tCPU;
-#endif
-
+// === TYPES ==
typedef struct sTSS {
Uint32 Link;
Uint32 ESP0, SS0;
Uint16 Resvd, IOPB; // IO Permissions Bitmap
} __attribute__((packed)) tTSS;
-// === FUNCTIONS ===
-extern void Proc_Start();
-extern int Proc_Clone(Uint *Err, Uint Flags);
+typedef struct {
+ #if USE_PAE
+ Uint PDPT[4];
+ #else
+ Uint32 CR3;
+ #endif
+} tMemoryState;
+
+// 512 bytes, 16 byte aligned
+typedef struct sSSEState
+{
+ char data[512];
+} tSSEState;
+
+typedef struct {
+ Uint EIP, ESP;
+ Uint32 UserCS, UserEIP;
+ tSSEState *SSE;
+ int bSSEModified;
+} tTaskState;
+
+#include <threads_int.h>
+
+#define USER_MAX KERNEL_BASE
#endif