aboutsummaryrefslogtreecommitdiff
path: root/src/kernel/include
diff options
context:
space:
mode:
authorAlex Auvolat <alex.auvolat@ens.fr>2015-03-02 18:16:15 +0100
committerAlex Auvolat <alex.auvolat@ens.fr>2015-03-02 18:16:15 +0100
commitceb687b02964197133fd2236cdbc74bf3948d034 (patch)
treeb34b7aeec70990978c2562aa2d7b00202a223926 /src/kernel/include
parentb68881abc4c50bbc8ee9e81b4e18b0ea011b83b7 (diff)
downloadkogata-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.h7
-rw-r--r--src/kernel/include/kmalloc.h3
-rw-r--r--src/kernel/include/region.h4
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