Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 24 Apr 2006 03:53:26 GMT
From:      John Birrell <jb@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 95987 for review
Message-ID:  <200604240353.k3O3rQ9E010703@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=95987

Change 95987 by jb@jb_freebsd2 on 2006/04/24 03:52:59

	Just allocate buffer memory for the maximum number of cpus.

Affected files ...

.. //depot/projects/dtrace/src/sys/cddl/dev/dtrace/dtrace_buffer.c#3 edit

Differences ...

==== //depot/projects/dtrace/src/sys/cddl/dev/dtrace/dtrace_buffer.c#3 (text+ko) ====

@@ -69,8 +69,7 @@
 dtrace_buffer_alloc(dtrace_buffer_t *bufs, size_t size, int flags,
     processorid_t cpu)
 {
-printf("%s:%s(%d): DOODAD\n",__FUNCTION__,__FILE__,__LINE__);
-#ifdef DOODAD
+#if defined(sun)
 	cpu_t *cp;
 	dtrace_buffer_t *buf;
 
@@ -142,9 +141,51 @@
 		buf->dtb_xamot = NULL;
 		buf->dtb_size = 0;
 	} while ((cp = cp->cpu_next) != cpu_list);
-#endif
 
 	return (ENOMEM);
+#else
+	dtrace_buffer_t *buf;
+	int i;
+
+	ASSERT(MUTEX_HELD(&dtrace_lock));
+	for (i = 0; i < mp_ncpus; i++) {
+		buf = &bufs[i];
+
+		/*
+		 * If there is already a buffer allocated for this CPU, it
+		 * is only possible that this is a DR event.  In this case,
+		 * the buffer size must match our specified size.
+		 */
+		if (buf->dtb_tomax != NULL) {
+			ASSERT(buf->dtb_size == size);
+printf("buf->dtb_size %ld size %ld\n",(long) buf->dtb_size,(long) size);
+			continue;
+		}
+
+		ASSERT(buf->dtb_xamot == NULL);
+
+		/*
+		 * XXX Hack.
+		 * This should be KM_NOSLEEP with error handling if low on
+		 * memory.
+		 */
+		buf->dtb_tomax = kmem_zalloc(size, KM_SLEEP);
+
+		buf->dtb_size = size;
+		buf->dtb_flags = flags;
+		buf->dtb_offset = 0;
+		buf->dtb_drops = 0;
+
+		/*
+		 * XXX Hack.
+		 * This should be KM_NOSLEEP with error handling if low on
+		 * memory.
+		 */
+		buf->dtb_xamot = kmem_zalloc(size, KM_SLEEP);
+	}
+
+	return (0);
+#endif
 }
 
 /*



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