Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 4 Jan 2010 09:02:39 +0000 (UTC)
From:      Kip Macy <kmacy@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r201476 - user/kmacy/releng_8_rump/lib/libunet
Message-ID:  <201001040902.o0492dkj009987@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kmacy
Date: Mon Jan  4 09:02:39 2010
New Revision: 201476
URL: http://svn.freebsd.org/changeset/base/201476

Log:
  add kmem definitions, remove kern_malloc.c due to use kmem_suballoc

Modified:
  user/kmacy/releng_8_rump/lib/libunet/Makefile
  user/kmacy/releng_8_rump/lib/libunet/unet_compat.c
  user/kmacy/releng_8_rump/lib/libunet/unet_glue.c

Modified: user/kmacy/releng_8_rump/lib/libunet/Makefile
==============================================================================
--- user/kmacy/releng_8_rump/lib/libunet/Makefile	Mon Jan  4 08:33:33 2010	(r201475)
+++ user/kmacy/releng_8_rump/lib/libunet/Makefile	Mon Jan  4 09:02:39 2010	(r201476)
@@ -12,7 +12,6 @@ LIB=	unet
 UNET_KERN_COMMON_OBJS +=	\
 	kern_environment.o	\
 	kern_event.o		\
-	kern_malloc.o		\
 	kern_mbuf.o		\
 	kern_module.o		\
 	kern_mtxpool.o		\

Modified: user/kmacy/releng_8_rump/lib/libunet/unet_compat.c
==============================================================================
--- user/kmacy/releng_8_rump/lib/libunet/unet_compat.c	Mon Jan  4 08:33:33 2010	(r201475)
+++ user/kmacy/releng_8_rump/lib/libunet/unet_compat.c	Mon Jan  4 09:02:39 2010	(r201476)
@@ -2,11 +2,30 @@
 #define _WANT_UCRED
 #include <stdlib.h>
 #include <sys/types.h>
+#include <sys/mman.h>
 #include <sys/refcount.h>
 #include <sys/ucred.h>
 
 struct malloc_type;
-#if 0
+
+vm_offset_t kmem_malloc(void * map, int bytes, int wait);
+void kmem_free(void *map, vm_offset_t addr, vm_size_t size);
+
+vm_offset_t
+kmem_malloc(void * map, int bytes, int wait)
+{
+
+	return ((vm_offset_t)mmap(NULL, bytes, PROT_READ|PROT_WRITE, MAP_ANON, -1, 0));
+}
+
+
+void
+kmem_free(void *map, vm_offset_t addr, vm_size_t size)
+{
+
+	munmap((void *)addr, size);
+}
+
 void *
 unet_malloc(unsigned long size, struct malloc_type *type, int flags)
 {
@@ -20,7 +39,7 @@ unet_free(void *addr, struct malloc_type
 
 	free(addr);
 }
-#endif
+
 /*
  * Claim another reference to a ucred structure.
  */

Modified: user/kmacy/releng_8_rump/lib/libunet/unet_glue.c
==============================================================================
--- user/kmacy/releng_8_rump/lib/libunet/unet_glue.c	Mon Jan  4 08:33:33 2010	(r201475)
+++ user/kmacy/releng_8_rump/lib/libunet/unet_glue.c	Mon Jan  4 09:02:39 2010	(r201476)
@@ -21,6 +21,7 @@
 #include <vm/pmap.h>
 #include <vm/vm_object.h>
 #include <vm/vm_map.h>
+#include <vm/vm_extern.h>
 
 SYSCTL_NODE(, 0,	  sysctl, CTLFLAG_RW, 0,
 	"Sysctl internal magic");
@@ -34,6 +35,9 @@ SYSCTL_NODE(, CTL_NET,	  net,    CTLFLAG
 SYSCTL_NODE(, CTL_VM,	  vm,    CTLFLAG_RW, 0,
 	"Virtual memory");
 
+MALLOC_DEFINE(M_DEVBUF, "devbuf", "device driver memory");
+MALLOC_DEFINE(M_TEMP, "temp", "misc temporary data buffers");
+
 
 int	ticks;
 
@@ -162,11 +166,10 @@ vslock(void *addr, size_t len)
 	return (0);
 }
 
-int
+void
 vsunlock(void *addr, size_t len)
 {
 
-	return (0);
 }
 
 
@@ -629,3 +632,90 @@ kproc_exit(int ecode)
 	panic("");
 }
 
+vm_offset_t
+kmem_alloc_contig(vm_map_t map, vm_size_t size, int flags, vm_paddr_t low,
+    vm_paddr_t high, unsigned long alignment, unsigned long boundary,
+    vm_memattr_t memattr)
+{
+	return (kmem_malloc(map, size, flags));
+}
+
+void
+malloc_init(void *data)
+{
+#ifdef notyet
+	struct malloc_type_internal *mtip;
+	struct malloc_type *mtp;
+
+	KASSERT(cnt.v_page_count != 0, ("malloc_register before vm_init"));
+
+	mtp = data;
+	if (mtp->ks_magic != M_MAGIC)
+		panic("malloc_init: bad malloc type magic");
+
+	mtip = uma_zalloc(mt_zone, M_WAITOK | M_ZERO);
+	mtp->ks_handle = mtip;
+
+	mtx_lock(&malloc_mtx);
+	mtp->ks_next = kmemstatistics;
+	kmemstatistics = mtp;
+	kmemcount++;
+	mtx_unlock(&malloc_mtx);
+#endif
+}
+
+void
+malloc_uninit(void *data)
+{
+#ifdef notyet
+	struct malloc_type_internal *mtip;
+	struct malloc_type_stats *mtsp;
+	struct malloc_type *mtp, *temp;
+	uma_slab_t slab;
+	long temp_allocs, temp_bytes;
+	int i;
+
+	mtp = data;
+	KASSERT(mtp->ks_magic == M_MAGIC,
+	    ("malloc_uninit: bad malloc type magic"));
+	KASSERT(mtp->ks_handle != NULL, ("malloc_deregister: cookie NULL"));
+
+	mtx_lock(&malloc_mtx);
+	mtip = mtp->ks_handle;
+	mtp->ks_handle = NULL;
+	if (mtp != kmemstatistics) {
+		for (temp = kmemstatistics; temp != NULL;
+		    temp = temp->ks_next) {
+			if (temp->ks_next == mtp) {
+				temp->ks_next = mtp->ks_next;
+				break;
+			}
+		}
+		KASSERT(temp,
+		    ("malloc_uninit: type '%s' not found", mtp->ks_shortdesc));
+	} else
+		kmemstatistics = mtp->ks_next;
+	kmemcount--;
+	mtx_unlock(&malloc_mtx);
+
+	/*
+	 * Look for memory leaks.
+	 */
+	temp_allocs = temp_bytes = 0;
+	for (i = 0; i < MAXCPU; i++) {
+		mtsp = &mtip->mti_stats[i];
+		temp_allocs += mtsp->mts_numallocs;
+		temp_allocs -= mtsp->mts_numfrees;
+		temp_bytes += mtsp->mts_memalloced;
+		temp_bytes -= mtsp->mts_memfreed;
+	}
+	if (temp_allocs > 0 || temp_bytes > 0) {
+		printf("Warning: memory type %s leaked memory on destroy "
+		    "(%ld allocations, %ld bytes leaked).\n", mtp->ks_shortdesc,
+		    temp_allocs, temp_bytes);
+	}
+
+	slab = vtoslab((vm_offset_t) mtip & (~UMA_SLAB_MASK));
+	uma_zfree_arg(mt_zone, mtip, slab);
+#endif
+}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201001040902.o0492dkj009987>