diff options
author | Alex Auvolat <alex.auvolat@ens.fr> | 2015-03-02 18:16:15 +0100 |
---|---|---|
committer | Alex Auvolat <alex.auvolat@ens.fr> | 2015-03-02 18:16:15 +0100 |
commit | ceb687b02964197133fd2236cdbc74bf3948d034 (patch) | |
tree | b34b7aeec70990978c2562aa2d7b00202a223926 /src/kernel/include | |
parent | b68881abc4c50bbc8ee9e81b4e18b0ea011b83b7 (diff) | |
download | kogata-ceb687b02964197133fd2236cdbc74bf3948d034.tar.gz kogata-ceb687b02964197133fd2236cdbc74bf3948d034.zip |
No lazy allocation of kernel memory. Placeholder for pmem freeing routine.
Diffstat (limited to 'src/kernel/include')
-rw-r--r-- | src/kernel/include/freemem.h | 7 | ||||
-rw-r--r-- | src/kernel/include/kmalloc.h | 3 | ||||
-rw-r--r-- | src/kernel/include/region.h | 4 |
3 files changed, 12 insertions, 2 deletions
diff --git a/src/kernel/include/freemem.h b/src/kernel/include/freemem.h new file mode 100644 index 0000000..d9c56a7 --- /dev/null +++ b/src/kernel/include/freemem.h @@ -0,0 +1,7 @@ +#pragma once + +#include <kmalloc.h> + +void free_some_memory(); // try to swap some pages and free some physical memory + +/* vim: set ts=4 sw=4 tw=0 noet :*/ diff --git a/src/kernel/include/kmalloc.h b/src/kernel/include/kmalloc.h index d4a9272..17ea440 100644 --- a/src/kernel/include/kmalloc.h +++ b/src/kernel/include/kmalloc.h @@ -6,6 +6,9 @@ // Kernel memory allocator : one slab allocator for shared memory // Thread-safe. +// The normal malloc() call will try to free some memory when OOM and will loop +// a few times if it cannot. It may fail though. + void kmalloc_setup(); /* vim: set ts=4 sw=4 tw=0 noet :*/ diff --git a/src/kernel/include/region.h b/src/kernel/include/region.h index a390e06..d5cba2d 100644 --- a/src/kernel/include/region.h +++ b/src/kernel/include/region.h @@ -24,8 +24,8 @@ region_info_t *find_region(void* addr); void region_free(void* addr); // some usefull PF handlers -// default_allocator_pf_handler : just allocates new frames on page faults -void default_allocator_pf_handler(pagedir_t *pd, struct region_info *r, void* addr); +void pf_handler_unexpected(pagedir_t *pd, struct region_info *r, void* addr); // Expects never to be called +void pf_handler_stackoverflow(pagedir_t *pd, struct region_info *r, void* addr); // Stack overflow detected // some functions for freeing regions and frames // region_free_unmap_free : deletes a region and frees all frames that were mapped in it |