PERFORCE change 100504 for review

Howard Su howardsu at FreeBSD.org
Mon Jul 3 14:56:22 UTC 2006


http://perforce.freebsd.org/chv.cgi?CH=100504

Change 100504 by howardsu at su_laptop on 2006/07/03 14:55:32

	Use FreeBSD zone allocator to support Solaris kmem call

Affected files ...

.. //depot/projects/dtrace/src/sys/cddl/kern/kmem.c#2 edit
.. //depot/projects/dtrace/src/sys/contrib/opensolaris/compat/sys/kmem.h#2 edit

Differences ...

==== //depot/projects/dtrace/src/sys/cddl/kern/kmem.c#2 (text+ko) ====

@@ -33,41 +33,3 @@
 
 MALLOC_DECLARE(M_KMEM);
 MALLOC_DEFINE(M_KMEM, "kmem", "kmem hack");
-
-/* XXX Hacks */
-
-kmem_cache_t *
-kmem_cache_create(
-        char *name,             /* descriptive name for this cache */
-        size_t bufsize,         /* size of the objects it manages */
-        size_t align,           /* required object alignment */
-        int (*constructor)(void *, void *, int), /* object constructor */
-        void (*destructor)(void *, void *),     /* object destructor */
-        void (*reclaim)(void *), /* memory reclaim callback */
-        void *private,          /* pass-thru arg for constr/destr/reclaim */
-        vmem_t *vmp,            /* vmem source for slab allocation */
-        int cflags)             /* cache creation flags */
-
-{
-	kmem_cache_t *p = malloc(sizeof(kmem_cache_t), M_KMEM, M_WAITOK);
-	p->size = bufsize;
-	return(p);
-}
-
-void *
-kmem_cache_alloc(kmem_cache_t *a, int b)
-{
-	return (malloc(a->size, M_KMEM, M_WAITOK | M_ZERO));
-}
-
-void
-kmem_cache_free(kmem_cache_t *a, void *b)
-{
-	free(b, M_KMEM);
-}
-
-void
-kmem_cache_destroy(kmem_cache_t *a)
-{
-	free(a, M_KMEM);
-}

==== //depot/projects/dtrace/src/sys/contrib/opensolaris/compat/sys/kmem.h#2 (text+ko) ====

@@ -25,6 +25,7 @@
 #define	_OPENSOLARIS_COMPAT_SYS_KMEM_H
 
 #include <sys/vmem.h>
+#include <vm/uma.h>
 
 #define KM_SLEEP		M_WAITOK
 #define KM_NOSLEEP		M_NOWAIT
@@ -33,17 +34,14 @@
 #define kmem_alloc(_a,_b)	malloc(_a, M_KMEM, _b)
 #define kmem_free(_a,_b)	free(_a, M_KMEM)
 
-typedef struct kmem_cache {
-	size_t size;
-} kmem_cache_t;
 
-kmem_cache_t *kmem_cache_create(char *, size_t, size_t,
-        int (*)(void *, void *, int), void (*)(void *, void *),
-        void (*)(void *), void *, vmem_t *, int);
-void kmem_cache_destroy(kmem_cache_t *);
-void *kmem_cache_alloc(kmem_cache_t *, int);
-void kmem_cache_free(kmem_cache_t *, void *);
-uint64_t kmem_cache_stat(kmem_cache_t *, char *);
-void kmem_cache_reap_now(kmem_cache_t *);
+typedef struct uma_zone	kmem_cache_t;
+#define kmem_cache_create(_name, _bufsize, _align, _ns0, _ns1, _ns2, _ns3, \
+		_ns4, _flags) \
+	uma_zcreate(_name, _bufsize, NULL, NULL, NULL, NULL, \
+		_align, _flags)
+#define kmem_cache_destroy(_a) uma_zdestroy(_a)
+#define kmem_cache_alloc(_a, _flags) uma_zalloc(_a, _flags)
+#define kmem_cache_free(_a, _b) uma_zfree(_a, _b)
 
 #endif	/* _OPENSOLARIS_COMPAT_SYS_KMEM_H */


More information about the p4-projects mailing list