summaryrefslogtreecommitdiff
path: root/proc.h
diff options
context:
space:
mode:
Diffstat (limited to 'proc.h')
-rw-r--r--proc.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/proc.h b/proc.h
new file mode 100644
index 0000000..e5c230c
--- /dev/null
+++ b/proc.h
@@ -0,0 +1,34 @@
+/*
+ * p->mem:
+ * text
+ * original data and bss
+ * fixed-size stack
+ * expandable heap
+ */
+
+/*
+ * segments in proc->gdt
+ */
+#define SEG_KCODE 1 // kernel code
+#define SEG_KDATA 2 // kernel data+stack
+#define SEG_UCODE 3
+#define SEG_UDATA 4
+#define SEG_TSS 5 // this process's task state
+#define NSEGS 6
+
+struct proc{
+ char *mem; // start of process's physical memory
+ unsigned sz; // total size of mem, including kernel stack
+ char *kstack; // kernel stack, separate from mem so it doesn't move
+ enum { UNUSED, RUNNABLE, WAITING } state;
+
+ struct Taskstate ts; // only to give cpu address of kernel stack
+ struct Segdesc gdt[NSEGS];
+ struct Pseudodesc gdt_pd;
+ unsigned esp; // kernel stack pointer
+ unsigned ebp; // kernel frame pointer
+
+ struct Trapframe *tf; // points into kstack, used to find user regs
+};
+
+extern struct proc proc[];