diff options
author | Robert Morris <[email protected]> | 2020-08-13 10:22:07 -0400 |
---|---|---|
committer | Frans Kaashoek <[email protected]> | 2020-08-17 08:18:23 -0400 |
commit | 8dc71a257d80d1e2f56cd7f931ca389fbb727b5c (patch) | |
tree | b29e38cd1aab2cb526dd657ba23d636a93401580 /kernel/vm.c | |
parent | bc51626aab45f420652f20948a1ffa5398ad9446 (diff) | |
download | xv6-labs-8dc71a257d80d1e2f56cd7f931ca389fbb727b5c.tar.gz xv6-labs-8dc71a257d80d1e2f56cd7f931ca389fbb727b5c.tar.bz2 xv6-labs-8dc71a257d80d1e2f56cd7f931ca389fbb727b5c.zip |
handle another out-of-memory in fork(). the policy here is not consistent,
since other calls (e.g. exec()) panic on out of memory.
Diffstat (limited to 'kernel/vm.c')
-rw-r--r-- | kernel/vm.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/kernel/vm.c b/kernel/vm.c index 92a5ff7..2f3789f 100644 --- a/kernel/vm.c +++ b/kernel/vm.c @@ -195,13 +195,14 @@ uvmunmap(pagetable_t pagetable, uint64 va, uint64 npages, int do_free) } // create an empty user page table. +// returns 0 if out of memory. pagetable_t uvmcreate() { pagetable_t pagetable; pagetable = (pagetable_t) kalloc(); if(pagetable == 0) - panic("uvmcreate: out of memory"); + return 0; memset(pagetable, 0, PGSIZE); return pagetable; } |