aboutsummaryrefslogtreecommitdiff
path: root/kern/slab.h
diff options
context:
space:
mode:
authorRichard Braun <rbraun@sceen.net>2016-02-02 23:17:20 +0100
committerRichard Braun <rbraun@sceen.net>2016-02-02 23:20:32 +0100
commit44d78061e90e777b51cae8e01eda5c0d3ce63103 (patch)
tree64af20619a7292834c9d66e8157e0301a8d62f0d /kern/slab.h
parent909167b9d05cf896f1e54122183ef8ee9ee70677 (diff)
downloadgnumach-44d78061e90e777b51cae8e01eda5c0d3ce63103.tar.gz
gnumach-44d78061e90e777b51cae8e01eda5c0d3ce63103.tar.bz2
gnumach-44d78061e90e777b51cae8e01eda5c0d3ce63103.zip
Fix various memory managment errors
A few errors were introduced in the latest changes. o Add VM_PAGE_WAIT calls around physical allocation attempts in case of memory exhaustion. o Fix stack release. o Fix memory exhaustion report. o Fix free page accounting. * kern/slab.c (kmem_pagealloc, kmem_pagefree): New functions (kmem_slab_create, kmem_slab_destroy, kalloc, kfree): Use kmem_pagealloc and kmem_pagefree instead of the raw page allocation functions. (kmem_cache_compute_sizes): Don't store slab order. * kern/slab.h (struct kmem_cache): Remove `slab_order' member. * kern/thread.c (stack_alloc): Call VM_PAGE_WAIT in case of memory exhaustion. (stack_collect): Call vm_page_free_contig instead of kmem_free to release pages. * vm/vm_page.c (vm_page_seg_alloc): Fix memory exhaustion report. (vm_page_setup): Don't update vm_page_free_count. (vm_page_free_pa): Check page parameter. (vm_page_mem_free): New function. * vm/vm_page.h (vm_page_free_count): Remove extern declaration. (vm_page_mem_free): New prototype. * vm/vm_pageout.c: Update comments not to refer to vm_page_free_count. (vm_pageout_scan, vm_pageout_continue, vm_pageout): Use vm_page_mem_free instead of vm_page_free_count, update types accordingly. * vm/vm_resident.c (vm_page_free_count, vm_page_free_count_minimum): Remove variables. (vm_page_free_avail): New variable. (vm_page_bootstrap, vm_page_grab, vm_page_release, vm_page_grab_contig, vm_page_free_contig, vm_page_wait): Use vm_page_mem_free instead of vm_page_free_count, update types accordingly, don't set vm_page_free_count_minimum. * vm/vm_user.c (vm_statistics): Likewise.
Diffstat (limited to 'kern/slab.h')
-rw-r--r--kern/slab.h1
1 files changed, 0 insertions, 1 deletions
diff --git a/kern/slab.h b/kern/slab.h
index 1ad24d63..c50efd3d 100644
--- a/kern/slab.h
+++ b/kern/slab.h
@@ -167,7 +167,6 @@ struct kmem_cache {
struct rbtree active_slabs;
int flags;
size_t bufctl_dist; /* Distance from buffer to bufctl */
- unsigned int slab_order;
size_t slab_size;
unsigned long bufs_per_slab;
unsigned long nr_objs; /* Number of allocated objects */