diff options
author | Mole Shang <[email protected]> | 2024-02-19 21:51:26 +0800 |
---|---|---|
committer | Mole Shang <[email protected]> | 2024-02-19 22:13:01 +0800 |
commit | 09ba9112386d5d59d7f2a31c469768c582acb939 (patch) | |
tree | b1dce737cdd94164e8d7f3f651ea7a86a22a42f3 /kernel/proc.h | |
parent | d86118fc80267649b4791c8c0c72ebd60edf1ef2 (diff) | |
download | xv6-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.h | 16 |
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 }; |