Remove the NO_KMEM_MAP and USE_SLAB_ALLOCATOR kernel options. Temporarily
authorMatthew Dillon <dillon@dragonflybsd.org>
Fri, 26 Sep 2003 19:23:34 +0000 (19:23 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Fri, 26 Sep 2003 19:23:34 +0000 (19:23 +0000)
add the USE_KMEM_MAP and NO_SLAB_ALLOCATOR kernel options, which developers
should generally not use.

We now use the slab allocator (and no kmem_map) by default.

12 files changed:
sys/conf/options
sys/config/TINDERBOX
sys/i386/conf/TINDERBOX
sys/kern/kern_malloc.c
sys/kern/kern_slaballoc.c
sys/sys/malloc.h
sys/vm/vm_kern.c
sys/vm/vm_kern.h
sys/vm/vm_map.c
sys/vm/vm_mmap.c
sys/vm/vm_object.c
sys/vm/vm_zone.c

index 0277057..5f766b7 100644 (file)
@@ -1,5 +1,5 @@
 # $FreeBSD: src/sys/conf/options,v 1.191.2.53 2003/06/04 17:56:58 sam Exp $
-# $DragonFly: src/sys/conf/options,v 1.7 2003/09/24 03:32:15 drhodus Exp $
+# $DragonFly: src/sys/conf/options,v 1.8 2003/09/26 19:23:29 dillon Exp $
 #
 #        On the handling of kernel options
 #
@@ -402,8 +402,8 @@ SIMPLELOCK_DEBUG    opt_global.h
 VFS_BIO_DEBUG          opt_global.h
 
 # These are VM related options
-NO_KMEM_MAP            opt_global.h
-USE_SLAB_ALLOCATOR     opt_vm.h
+USE_KMEM_MAP           opt_global.h
+NO_SLAB_ALLOCATOR      opt_vm.h
 VM_KMEM_SIZE           opt_vm.h
 VM_KMEM_SIZE_SCALE     opt_vm.h
 VM_KMEM_SIZE_MAX       opt_vm.h
index 89634d7..89881c8 100644 (file)
@@ -10,7 +10,7 @@
 #
 # Tinderbox maintained by:     Hiten Pandya (hmp@nxad.com)
 #
-# $DragonFly: src/sys/config/Attic/TINDERBOX,v 1.4 2003/09/05 17:44:58 drhodus Exp $
+# $DragonFly: src/sys/config/Attic/TINDERBOX,v 1.5 2003/09/26 19:23:34 dillon Exp $
 
 machine                i386
 cpu            I386_CPU
@@ -21,8 +21,6 @@ ident         TINDERBOX
 maxusers       0
 
 # ADD TEST OPTIONS HERE
-options                NO_KMEM_MAP             #Removal of kmem_map submap
-options                USE_SLAB_ALLOCATOR
 options                DDB
 options                INVARIANTS
 options                INVARIANT_SUPPORT
index fbf5c65..8f5e826 100644 (file)
@@ -10,7 +10,7 @@
 #
 # Tinderbox maintained by:     Hiten Pandya (hmp@nxad.com)
 #
-# $DragonFly: src/sys/i386/conf/Attic/TINDERBOX,v 1.4 2003/09/05 17:44:58 drhodus Exp $
+# $DragonFly: src/sys/i386/conf/Attic/TINDERBOX,v 1.5 2003/09/26 19:23:34 dillon Exp $
 
 machine                i386
 cpu            I386_CPU
@@ -21,8 +21,6 @@ ident         TINDERBOX
 maxusers       0
 
 # ADD TEST OPTIONS HERE
-options                NO_KMEM_MAP             #Removal of kmem_map submap
-options                USE_SLAB_ALLOCATOR
 options                DDB
 options                INVARIANTS
 options                INVARIANT_SUPPORT
index daef379..fc969e3 100644 (file)
  *
  *     @(#)kern_malloc.c       8.3 (Berkeley) 1/4/94
  * $FreeBSD: src/sys/kern/kern_malloc.c,v 1.64.2.5 2002/03/16 02:19:51 archie Exp $
- * $DragonFly: src/sys/kern/Attic/kern_malloc.c,v 1.12 2003/08/27 01:43:07 dillon Exp $
+ * $DragonFly: src/sys/kern/Attic/kern_malloc.c,v 1.13 2003/09/26 19:23:31 dillon Exp $
  */
 
 #include "opt_vm.h"
 
-#if !defined(USE_SLAB_ALLOCATOR)
+#if defined(NO_SLAB_ALLOCATOR)
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -85,15 +85,15 @@ static MALLOC_DEFINE(M_FREE, "free", "should be on free list");
 static struct malloc_type *kmemstatistics;
 static struct kmembuckets bucket[MINBUCKET + 16];
 static struct kmemusage *kmemusage;
-#if defined(NO_KMEM_MAP)
-static const char *kmembase = (char *)VM_MIN_KERNEL_ADDRESS;
-static const char *kmemlimit = (char *)VM_MAX_KERNEL_ADDRESS;
-#else
+#if defined(USE_KMEM_MAP)
 static char *kmembase;
 static char *kmemlimit;
+#else
+static const char *kmembase = (char *)VM_MIN_KERNEL_ADDRESS;
+static const char *kmemlimit = (char *)VM_MAX_KERNEL_ADDRESS;
 #endif
 
-#if !defined(NO_KMEM_MAP)
+#if defined(USE_KMEM_MAP)
 u_int vm_kmem_size;
 #endif
 
@@ -202,11 +202,11 @@ malloc(size, type, flags)
                else
                        allocsize = 1 << indx;
                npg = btoc(allocsize);
-#if defined(NO_KMEM_MAP)
-               va = (caddr_t) kmem_malloc(kernel_map,
+#if defined(USE_KMEM_MAP)
+               va = (caddr_t) kmem_malloc(kmem_map,
                                    (vm_size_t)ctob(npg), flags);
 #else
-               va = (caddr_t) kmem_malloc(kmem_map,
+               va = (caddr_t) kmem_malloc(kernel_map,
                                    (vm_size_t)ctob(npg), flags);
 #endif
                if (va == NULL) {
@@ -358,10 +358,10 @@ free(addr, type)
                    (void *)addr, size, type->ks_shortdesc, alloc);
 #endif /* INVARIANTS */
        if (size > MAXALLOCSAVE) {
-#if defined(NO_KMEM_MAP)
-               kmem_free(kernel_map, (vm_offset_t)addr, ctob(kup->ku_pagecnt));
-#else
+#if defined(USE_KMEM_MAP)
                kmem_free(kmem_map, (vm_offset_t)addr, ctob(kup->ku_pagecnt));
+#else
+               kmem_free(kernel_map, (vm_offset_t)addr, ctob(kup->ku_pagecnt));
 #endif
                size = kup->ku_pagecnt << PAGE_SHIFT;
                ksp->ks_memuse -= size;
@@ -537,7 +537,7 @@ kmeminit(dummy)
         */
        mem_size = vmstats.v_page_count * PAGE_SIZE;
 
-#if !defined(NO_KMEM_MAP)
+#if defined(USE_KMEM_MAP)
        vm_kmem_size = VM_KMEM_SIZE;
 #if defined(VM_KMEM_SIZE_SCALE)
        if ((mem_size / VM_KMEM_SIZE_SCALE) > vm_kmem_size)
@@ -588,7 +588,7 @@ malloc_init(data)
        void *data;
 {
        struct malloc_type *type = (struct malloc_type *)data;
-#if defined(NO_KMEM_MAP)
+#if !defined(USE_KMEM_MAP)
        vm_poff_t limsize;
 #endif
 
@@ -605,13 +605,13 @@ malloc_init(data)
         * The default limits for each malloc region is 1/10 of available
         * memory or 1/10 of our KVA space, whichever is lower.
         */
-#if defined(NO_KMEM_MAP)
+#if defined(USE_KMEM_MAP)
+       type->ks_limit = vm_kmem_size / 2;
+#else
        limsize = (vm_poff_t)vmstats.v_page_count * PAGE_SIZE;
        if (limsize > VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS)
                limsize = VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS;
        type->ks_limit = limsize / 10;
-#else
-       type->ks_limit = vm_kmem_size / 2;
 #endif
        type->ks_next = kmemstatistics; 
        kmemstatistics = type;
index aec322d..a87fe8a 100644 (file)
@@ -25,7 +25,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $DragonFly: src/sys/kern/kern_slaballoc.c,v 1.5 2003/09/25 23:44:07 dillon Exp $
+ * $DragonFly: src/sys/kern/kern_slaballoc.c,v 1.6 2003/09/26 19:23:31 dillon Exp $
  *
  * This module implements a slab allocator drop-in replacement for the
  * kernel malloc().
 
 #include "opt_vm.h"
 
-#if defined(USE_SLAB_ALLOCATOR)
+#if !defined(NO_SLAB_ALLOCATOR)
 
-#if !defined(NO_KMEM_MAP)
-#error "NO_KMEM_MAP must be defined when USE_SLAB_ALLOCATOR is defined"
+#if defined(USE_KMEM_MAP)
+#error "If you define USE_KMEM_MAP you must also define NO_SLAB_ALLOCATOR"
 #endif
 
 #include <sys/param.h>
index 31f9638..6444d69 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     @(#)malloc.h    8.5 (Berkeley) 5/3/95
  * $FreeBSD: src/sys/sys/malloc.h,v 1.48.2.2 2002/03/16 02:19:16 archie Exp $
- * $DragonFly: src/sys/sys/malloc.h,v 1.7 2003/08/27 01:43:07 dillon Exp $
+ * $DragonFly: src/sys/sys/malloc.h,v 1.8 2003/09/26 19:23:34 dillon Exp $
  */
 
 #ifndef _SYS_MALLOC_H_
@@ -166,12 +166,12 @@ struct kmembuckets {
 /*
  * Turn virtual addresses into kmem map indices
  */
-#if defined(NO_KMEM_MAP)
-#define btokup(addr)   (&kmemusage[((caddr_t)(addr) - (caddr_t)VM_MIN_KERNEL_ADDRESS) >> PAGE_SHIFT])
-#else
+#if defined(USE_KMEM_MAP)
 #define kmemxtob(alloc)        (kmembase + (alloc) * PAGE_SIZE)
 #define btokmemx(addr) (((caddr_t)(addr) - kmembase) / PAGE_SIZE)
 #define btokup(addr)   (&kmemusage[((caddr_t)(addr) - kmembase) >> PAGE_SHIFT])
+#else
+#define btokup(addr)   (&kmemusage[((caddr_t)(addr) - (caddr_t)VM_MIN_KERNEL_ADDRESS) >> PAGE_SHIFT])
 #endif
 
 /*
index 4b99c1f..b2d5a34 100644 (file)
@@ -62,7 +62,7 @@
  * rights to redistribute these changes.
  *
  * $FreeBSD: src/sys/vm/vm_kern.c,v 1.61.2.2 2002/03/12 18:25:26 tegge Exp $
- * $DragonFly: src/sys/vm/vm_kern.c,v 1.8 2003/08/27 01:43:08 dillon Exp $
+ * $DragonFly: src/sys/vm/vm_kern.c,v 1.9 2003/09/26 19:23:34 dillon Exp $
  */
 
 /*
@@ -85,7 +85,7 @@
 #include <vm/vm_extern.h>
 
 vm_map_t kernel_map=0;
-#if !defined(NO_KMEM_MAP)
+#if defined(USE_KMEM_MAP)
 vm_map_t kmem_map=0;
 #endif
 vm_map_t exec_map=0;
@@ -309,11 +309,11 @@ kmem_malloc(vm_map_t map, vm_size_t size, int flags)
        vm_page_t m;
        int count;
 
-#if defined(NO_KMEM_MAP)
-       if (map != kernel_map && map != mb_map)
+#if defined(USE_KMEM_MAP)
+       if (map != kmem_map && map != mb_map)
                panic("kmem_malloc: map != {kmem,mb}_map");
 #else
-       if (map != kmem_map && map != mb_map)
+       if (map != kernel_map && map != mb_map)
                panic("kmem_malloc: map != {kmem,mb}_map");
 #endif
 
@@ -335,12 +335,12 @@ kmem_malloc(vm_map_t map, vm_size_t size, int flags)
                        printf("Out of mbuf clusters - adjust NMBCLUSTERS or increase maxusers!\n");
                        return (0);
                }
-#if defined(NO_KMEM_MAP)
+#if defined(USE_KMEM_MAP)
                if ((flags & M_NOWAIT) == 0)
-                       panic("kmem_malloc(%ld): kernel_map too small: %ld total allocated",
+                       panic("kmem_malloc(%ld): kmem_map too small: %ld total allocated",
 #else
                if ((flags & M_NOWAIT) == 0)
-                       panic("kmem_malloc(%ld): kmem_map too small: %ld total allocated",
+                       panic("kmem_malloc(%ld): kernel_map too small: %ld total allocated",
 #endif
                                (long)size, (long)map->size);
                return (0);
index b37e604..57108c6 100644 (file)
@@ -62,7 +62,7 @@
  * rights to redistribute these changes.
  *
  * $FreeBSD: src/sys/vm/vm_kern.h,v 1.22 2000/02/16 21:11:31 dillon Exp $
- * $DragonFly: src/sys/vm/vm_kern.h,v 1.3 2003/08/25 19:50:33 dillon Exp $
+ * $DragonFly: src/sys/vm/vm_kern.h,v 1.4 2003/09/26 19:23:34 dillon Exp $
  */
 
 #ifndef _VM_VM_KERN_H_
@@ -71,7 +71,7 @@
 /* Kernel memory management definitions. */
 extern vm_map_t buffer_map;
 extern vm_map_t kernel_map;
-#if !defined(NO_KMEM_MAP)
+#if defined(USE_KMEM_MAP)
 extern vm_map_t kmem_map;
 #endif
 extern vm_map_t mb_map;
index e3cd300..3ff62d1 100644 (file)
@@ -62,7 +62,7 @@
  * rights to redistribute these changes.
  *
  * $FreeBSD: src/sys/vm/vm_map.c,v 1.187.2.19 2003/05/27 00:47:02 alc Exp $
- * $DragonFly: src/sys/vm/vm_map.c,v 1.11 2003/08/27 01:43:08 dillon Exp $
+ * $DragonFly: src/sys/vm/vm_map.c,v 1.12 2003/09/26 19:23:34 dillon Exp $
  */
 
 /*
@@ -876,13 +876,13 @@ vm_map_find(vm_map_t map, vm_object_t object, vm_ooffset_t offset,
        vm_offset_t start;
        int result;
        int count;
-#if !defined(NO_KMEM_MAP)
+#if defined(USE_KMEM_MAP)
        int s = 0;
 #endif
 
        start = *addr;
 
-#if !defined(NO_KMEM_MAP)
+#if defined(USE_KMEM_MAP)
        if (map == kmem_map || map == mb_map)
                s = splvm();
 #endif
@@ -893,7 +893,7 @@ vm_map_find(vm_map_t map, vm_object_t object, vm_ooffset_t offset,
                if (vm_map_findspace(map, start, length, 1, addr)) {
                        vm_map_unlock(map);
                        vm_map_entry_release(count);
-#if !defined(NO_KMEM_MAP)
+#if defined(USE_KMEM_MAP)
                        if (map == kmem_map || map == mb_map)
                                splx(s);
 #endif
@@ -906,7 +906,7 @@ vm_map_find(vm_map_t map, vm_object_t object, vm_ooffset_t offset,
        vm_map_unlock(map);
        vm_map_entry_release(count);
 
-#if !defined(NO_KMEM_MAP)
+#if defined(USE_KMEM_MAP)
        if (map == kmem_map || map == mb_map)
                splx(s);
 #endif
@@ -1866,7 +1866,7 @@ vm_map_pageable(vm_map_t map, vm_offset_t start,
 
        if (map == kernel_map)
                count = vm_map_entry_kreserve(MAP_RESERVE_COUNT);
-#if !defined(NO_KMEM_MAP)
+#if defined(USE_KMEM_MAP)
        else if (map == kmem_map)
                count = vm_map_entry_kreserve(MAP_RESERVE_COUNT);
 #endif
@@ -2062,7 +2062,7 @@ done:
 failure:
        if (map == kernel_map)
                vm_map_entry_krelease(count);
-#if !defined(NO_KMEM_MAP)
+#if defined(USE_KMEM_MAP)
        else if (map == kmem_map)
                vm_map_entry_krelease(count);
 #endif
@@ -2385,11 +2385,11 @@ vm_map_remove(vm_map_t map, vm_offset_t start, vm_offset_t end)
 {
        int result;
        int count;
-#if !defined(NO_KMEM_MAP)
+#if defined(USE_KMEM_MAP)
        int s = 0;
 #endif
 
-#if !defined(NO_KMEM_MAP)
+#if defined(USE_KMEM_MAP)
        if (map == kmem_map || map == mb_map)
                s = splvm();
 #endif
@@ -2400,7 +2400,7 @@ vm_map_remove(vm_map_t map, vm_offset_t start, vm_offset_t end)
        vm_map_unlock(map);
        vm_map_entry_release(count);
 
-#if !defined(NO_KMEM_MAP)
+#if defined(USE_KMEM_MAP)
        if (map == kmem_map || map == mb_map)
                splx(s);
 #endif
index 402bd1f..f2e5bb3 100644 (file)
@@ -39,7 +39,7 @@
  *
  *     @(#)vm_mmap.c   8.4 (Berkeley) 1/12/94
  * $FreeBSD: src/sys/vm/vm_mmap.c,v 1.108.2.6 2002/07/02 20:06:19 dillon Exp $
- * $DragonFly: src/sys/vm/vm_mmap.c,v 1.12 2003/08/25 19:50:33 dillon Exp $
+ * $DragonFly: src/sys/vm/vm_mmap.c,v 1.13 2003/09/26 19:23:34 dillon Exp $
  */
 
 /*
@@ -99,12 +99,12 @@ static void
 vmmapentry_rsrc_init(dummy)
         void *dummy;
 {
-#if defined(NO_KMEM_MAP)
-    max_proc_mmap = (VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS) /
-                       sizeof(struct vm_map_entry);
+#if defined(USE_KMEM_MAP)
+    max_proc_mmap = vm_kmem_size / sizeof(struct vm_map_entry);
     max_proc_mmap /= 100;
 #else
-    max_proc_mmap = vm_kmem_size / sizeof(struct vm_map_entry);
+    max_proc_mmap = (VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS) /
+                       sizeof(struct vm_map_entry);
     max_proc_mmap /= 100;
 #endif
 }
index f4efa76..b0bf5a6 100644 (file)
@@ -62,7 +62,7 @@
  * rights to redistribute these changes.
  *
  * $FreeBSD: src/sys/vm/vm_object.c,v 1.171.2.8 2003/05/26 19:17:56 alc Exp $
- * $DragonFly: src/sys/vm/vm_object.c,v 1.8 2003/08/25 19:50:33 dillon Exp $
+ * $DragonFly: src/sys/vm/vm_object.c,v 1.9 2003/09/26 19:23:34 dillon Exp $
  */
 
 /*
@@ -1785,7 +1785,7 @@ vm_object_in_map( object)
        }
        if( _vm_object_in_map( kernel_map, object, 0))
                return 1;
-#if !defined(NO_KMEM_MAP)
+#if defined(USE_KMEM_MAP)
        if( _vm_object_in_map( kmem_map, object, 0))
                return 1;
 #endif
index 635afcf..85c1e58 100644 (file)
@@ -12,7 +12,7 @@
  *     John S. Dyson.
  *
  * $FreeBSD: src/sys/vm/vm_zone.c,v 1.30.2.6 2002/10/10 19:50:16 dillon Exp $
- * $DragonFly: src/sys/vm/vm_zone.c,v 1.9 2003/08/27 01:43:08 dillon Exp $
+ * $DragonFly: src/sys/vm/vm_zone.c,v 1.10 2003/09/26 19:23:34 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -329,7 +329,7 @@ zget(vm_zone_t z)
        } else {
                nbytes = z->zalloc * PAGE_SIZE;
 
-#if !defined(NO_KMEM_MAP)
+#if defined(USE_KMEM_MAP)
                /*
                 * Check to see if the kernel map is already locked. 
                 * We could allow for recursive locks, but that eliminates