summaryrefslogtreecommitdiff
path: root/kernel/proc.h
diff options
context:
space:
mode:
authorMole Shang <[email protected]>2024-02-19 21:51:26 +0800
committerMole Shang <[email protected]>2024-02-19 22:13:01 +0800
commit09ba9112386d5d59d7f2a31c469768c582acb939 (patch)
treeb1dce737cdd94164e8d7f3f651ea7a86a22a42f3 /kernel/proc.h
parentd86118fc80267649b4791c8c0c72ebd60edf1ef2 (diff)
downloadxv6-labs-09ba9112386d5d59d7f2a31c469768c582acb939.tar.gz
xv6-labs-09ba9112386d5d59d7f2a31c469768c582acb939.tar.bz2
xv6-labs-09ba9112386d5d59d7f2a31c469768c582acb939.zip
lab mmap: finish
Diffstat (limited to 'kernel/proc.h')
-rw-r--r--kernel/proc.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/kernel/proc.h b/kernel/proc.h
index a195b02..ebdbb7a 100644
--- a/kernel/proc.h
+++ b/kernel/proc.h
@@ -81,6 +81,20 @@ struct trapframe {
enum procstate { UNUSED, USED, SLEEPING, RUNNABLE, RUNNING, ZOMBIE };
+// mmap vm area
+#define MAX_VM_AREA 0x40
+
+struct vm_area {
+ uint64 start_addr;
+ uint64 roff;
+ uint64 woff;
+ uint64 len;
+ int prot;
+ int flags;
+ struct file* file;
+ int fd;
+};
+
// Per-process state
struct proc {
struct spinlock lock;
@@ -111,4 +125,6 @@ struct proc {
int alarm_tickspassed; // record how many ticks passed since last sigalarm handler call
int alarm_caninvoke; // prevent re-entrant calls to handler
struct trapframe *atpfm; // trapframe to resume after handling, must hold p->lock
+ struct vm_area vma[MAX_VM_AREA]; // vm_area
+ uint64 cur_max_vm_addr; // current max vm addr, used by mmap
};