From db2078e4f1802434f791f4f1c333725c42fe172b Mon Sep 17 00:00:00 2001 From: Richard Braun Date: Sat, 17 Dec 2011 15:24:05 +0000 Subject: Adjust the kernel to use the slab allocator * device/dev_lookup.c: Replace zalloc header, types and function calls with their slab counterparts. * device/dev_pager.c: Likewise. * device/ds_routines.c: Likewise. * device/io_req.h: Likewise. * device/net_io.c: Likewise. * i386/i386/fpu.c: Likewise. * i386/i386/io_perm.c: Likewise. * i386/i386/machine_task.c: Likewise. * i386/i386/pcb.c: Likewise. * i386/i386/task.h: Likewise. * i386/intel/pmap.c: Likewise. * i386/intel/pmap.h: Remove #include . * include/mach_debug/mach_debug.defs (host_zone_info): Replace routine declaration with skip directive. (host_slab_info): New routine declaration. * include/mach_debug/mach_debug_types.defs (zone_name_t) (zone_name_array_t, zone_info_t, zone_info_array_t): Remove types. (cache_info_t, cache_info_array_t): New types. * include/mach_debug/mach_debug_types.h: Replace #include with . * ipc/ipc_entry.c: Replace zalloc header, types and function calls with their slab counterparts. * ipc/ipc_entry.h: Likewise. * ipc/ipc_init.c: Likewise. * ipc/ipc_marequest.c: Likewise. * ipc/ipc_object.c: Likewise. * ipc/ipc_object.h: Likewise. * ipc/ipc_space.c: Likewise. * ipc/ipc_space.h: Likewise. * ipc/ipc_table.c (kalloc_map): Remove extern declaration. * kern/act.c: Replace zalloc header, types and function calls with their slab counterparts. * kern/kalloc.h: Add #include . (MINSIZE): Remove definition. (kalloc_map): Add extern declaration. (kget): Remove prototype. * kern/mach_clock.c: Adjust comment. * kern/processor.c: Replace zalloc header, types and function calls with their slab counterparts. * kern/startup.c: Remove #include . * kern/task.c: Replace zalloc header, types and function calls with their slab counterparts. * kern/thread.c: Likewise. * vm/memory_object_proxy.c: Likewise. * vm/vm_external.c: Likewise. * vm/vm_fault.c: Likewise. * vm/vm_init.c: Likewise. * vm/vm_map.c: Likewise. * vm/vm_object.c: Likewise. * vm/vm_page.h: Remove #include . * vm/vm_pageout.c: Replace zalloc header, types and function calls with their slab counterparts. * vm/vm_resident.c: Likewise. (zdata, zdata_size): Remove declarations. (vm_page_bootstrap): Don't steal memory for the zone system. --- kern/kalloc.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'kern/kalloc.h') diff --git a/kern/kalloc.h b/kern/kalloc.h index a80f6dbd..1330b546 100644 --- a/kern/kalloc.h +++ b/kern/kalloc.h @@ -28,11 +28,11 @@ #define _KERN_KALLOC_H_ #include +#include -#define MINSIZE 16 +extern vm_map_t kalloc_map; extern vm_offset_t kalloc (vm_size_t size); -extern vm_offset_t kget (vm_size_t size); extern void kfree (vm_offset_t data, vm_size_t size); extern void kalloc_init (void); -- cgit v1.2.3 From 2d2da4aad582bf1d63554cd9496285787db3e66e Mon Sep 17 00:00:00 2001 From: Richard Braun Date: Sat, 7 Jul 2012 07:42:24 +0000 Subject: Merge kalloc_map into kmem_map * ipc/ipc_table.c: Add #include . (ipc_table_alloc): Use kmem_map instead of kalloc_map when allocating a table. (ipc_table_realloc): Likewise for reallocation. (ipc_table_free): Likewise for release. * kern/kalloc.h (kalloc_map): Remove declaration. * kern/slab.c (KMEM_MAP_SIZE): Increase to 128 MiB. (KALLOC_MAP_SIZE): Remove macro. (kalloc_map_store): Remove variable. (kalloc_map): Likewise. (kalloc_pagealloc): Use kmem_map instead of kalloc_map for general purpose allocations. (kalloc_pagefree): Likewise. (kalloc_init): Remove the creation of kalloc_map. --- ipc/ipc_table.c | 7 ++++--- kern/kalloc.h | 2 -- kern/slab.c | 21 ++++----------------- 3 files changed, 8 insertions(+), 22 deletions(-) (limited to 'kern/kalloc.h') diff --git a/ipc/ipc_table.c b/ipc/ipc_table.c index d5b79045..cbb6a894 100644 --- a/ipc/ipc_table.c +++ b/ipc/ipc_table.c @@ -39,6 +39,7 @@ #include #include #include +#include #include /* @@ -144,7 +145,7 @@ ipc_table_alloc( if (size < PAGE_SIZE) table = kalloc(size); else - if (kmem_alloc(kalloc_map, &table, size) != KERN_SUCCESS) + if (kmem_alloc(kmem_map, &table, size) != KERN_SUCCESS) table = 0; return table; @@ -170,7 +171,7 @@ ipc_table_realloc( { vm_offset_t new_table; - if (kmem_realloc(kalloc_map, old_table, old_size, + if (kmem_realloc(kmem_map, old_table, old_size, &new_table, new_size) != KERN_SUCCESS) new_table = 0; @@ -194,5 +195,5 @@ ipc_table_free( if (size < PAGE_SIZE) kfree(table, size); else - kmem_free(kalloc_map, table, size); + kmem_free(kmem_map, table, size); } diff --git a/kern/kalloc.h b/kern/kalloc.h index 1330b546..004e3a6b 100644 --- a/kern/kalloc.h +++ b/kern/kalloc.h @@ -30,8 +30,6 @@ #include #include -extern vm_map_t kalloc_map; - extern vm_offset_t kalloc (vm_size_t size); extern void kfree (vm_offset_t data, vm_size_t size); diff --git a/kern/slab.c b/kern/slab.c index 5a9cbea1..12e4ff49 100644 --- a/kern/slab.c +++ b/kern/slab.c @@ -165,7 +165,7 @@ /* * Size of the VM submap from which default backend functions allocate. */ -#define KMEM_MAP_SIZE (64 * 1024 * 1024) +#define KMEM_MAP_SIZE (128 * 1024 * 1024) /* * Shift for the first kalloc cache size. @@ -177,11 +177,6 @@ */ #define KALLOC_NR_CACHES 13 -/* - * Size of the VM submap for general purpose allocations. - */ -#define KALLOC_MAP_SIZE (64 * 1024 * 1024) - /* * Values the buftag state member can take. */ @@ -283,17 +278,11 @@ static unsigned int kmem_nr_caches; static simple_lock_data_t __attribute__((used)) kmem_cache_list_lock; /* - * VM submap for slab caches (except general purpose allocations). + * VM submap for slab caches. */ static struct vm_map kmem_map_store; vm_map_t kmem_map = &kmem_map_store; -/* - * VM submap for general purpose allocations. - */ -static struct vm_map kalloc_map_store; -vm_map_t kalloc_map = &kalloc_map_store; - /* * Time of the last memory reclaim, in clock ticks. */ @@ -1380,7 +1369,7 @@ static vm_offset_t kalloc_pagealloc(vm_size_t size) vm_offset_t addr; kern_return_t kr; - kr = kmem_alloc_wired(kalloc_map, &addr, size); + kr = kmem_alloc_wired(kmem_map, &addr, size); if (kr != KERN_SUCCESS) return 0; @@ -1390,7 +1379,7 @@ static vm_offset_t kalloc_pagealloc(vm_size_t size) static void kalloc_pagefree(vm_offset_t ptr, vm_size_t size) { - kmem_free(kalloc_map, ptr, size); + kmem_free(kmem_map, ptr, size); } void kalloc_init(void) @@ -1399,8 +1388,6 @@ void kalloc_init(void) size_t i, size; vm_offset_t min, max; - kmem_submap(kalloc_map, kernel_map, &min, &max, KALLOC_MAP_SIZE, FALSE); - size = 1 << KALLOC_FIRST_SHIFT; for (i = 0; i < ARRAY_SIZE(kalloc_caches); i++) { -- cgit v1.2.3