svn commit: r246782 - in projects/utrace2: contrib/jemalloc/src lib/libc/stdlib/jemalloc

Alfred Perlstein alfred at FreeBSD.org
Thu Feb 14 04:28:51 UTC 2013


Author: alfred
Date: Thu Feb 14 04:28:49 2013
New Revision: 246782
URL: http://svnweb.freebsd.org/changeset/base/246782

Log:
  Allow utrace2 to be turned on, or old utrace via malloc config.

Modified:
  projects/utrace2/contrib/jemalloc/src/ctl.c
  projects/utrace2/contrib/jemalloc/src/jemalloc.c
  projects/utrace2/contrib/jemalloc/src/stats.c
  projects/utrace2/lib/libc/stdlib/jemalloc/Symbol.map

Modified: projects/utrace2/contrib/jemalloc/src/ctl.c
==============================================================================
--- projects/utrace2/contrib/jemalloc/src/ctl.c	Thu Feb 14 02:00:41 2013	(r246781)
+++ projects/utrace2/contrib/jemalloc/src/ctl.c	Thu Feb 14 04:28:49 2013	(r246782)
@@ -86,6 +86,7 @@ CTL_PROTO(config_stats)
 CTL_PROTO(config_tcache)
 CTL_PROTO(config_tls)
 CTL_PROTO(config_utrace)
+CTL_PROTO(config_utrace2)
 CTL_PROTO(config_valgrind)
 CTL_PROTO(config_xmalloc)
 CTL_PROTO(opt_abort)
@@ -99,6 +100,7 @@ CTL_PROTO(opt_zero)
 CTL_PROTO(opt_quarantine)
 CTL_PROTO(opt_redzone)
 CTL_PROTO(opt_utrace)
+CTL_PROTO(opt_utrace2)
 CTL_PROTO(opt_valgrind)
 CTL_PROTO(opt_xmalloc)
 CTL_PROTO(opt_tcache)
@@ -225,6 +227,7 @@ static const ctl_named_node_t	config_nod
 	{NAME("tcache"),		CTL(config_tcache)},
 	{NAME("tls"),			CTL(config_tls)},
 	{NAME("utrace"),		CTL(config_utrace)},
+	{NAME("utrace2"),		CTL(config_utrace2)},
 	{NAME("valgrind"),		CTL(config_valgrind)},
 	{NAME("xmalloc"),		CTL(config_xmalloc)}
 };
@@ -241,6 +244,7 @@ static const ctl_named_node_t opt_node[]
 	{NAME("quarantine"),		CTL(opt_quarantine)},
 	{NAME("redzone"),		CTL(opt_redzone)},
 	{NAME("utrace"),		CTL(opt_utrace)},
+	{NAME("utrace2"),		CTL(opt_utrace2)},
 	{NAME("valgrind"),		CTL(opt_valgrind)},
 	{NAME("xmalloc"),		CTL(opt_xmalloc)},
 	{NAME("tcache"),		CTL(opt_tcache)},
@@ -1242,6 +1246,7 @@ CTL_RO_BOOL_CONFIG_GEN(config_stats)
 CTL_RO_BOOL_CONFIG_GEN(config_tcache)
 CTL_RO_BOOL_CONFIG_GEN(config_tls)
 CTL_RO_BOOL_CONFIG_GEN(config_utrace)
+CTL_RO_BOOL_CONFIG_GEN(config_utrace2)
 CTL_RO_BOOL_CONFIG_GEN(config_valgrind)
 CTL_RO_BOOL_CONFIG_GEN(config_xmalloc)
 
@@ -1258,6 +1263,7 @@ CTL_RO_NL_CGEN(config_fill, opt_zero, op
 CTL_RO_NL_CGEN(config_fill, opt_quarantine, opt_quarantine, size_t)
 CTL_RO_NL_CGEN(config_fill, opt_redzone, opt_redzone, bool)
 CTL_RO_NL_CGEN(config_utrace, opt_utrace, opt_utrace, bool)
+CTL_RO_NL_CGEN(config_utrace2, opt_utrace2, opt_utrace2, bool)
 CTL_RO_NL_CGEN(config_valgrind, opt_valgrind, opt_valgrind, bool)
 CTL_RO_NL_CGEN(config_xmalloc, opt_xmalloc, opt_xmalloc, bool)
 CTL_RO_NL_CGEN(config_tcache, opt_tcache, opt_tcache, bool)

Modified: projects/utrace2/contrib/jemalloc/src/jemalloc.c
==============================================================================
--- projects/utrace2/contrib/jemalloc/src/jemalloc.c	Thu Feb 14 02:00:41 2013	(r246781)
+++ projects/utrace2/contrib/jemalloc/src/jemalloc.c	Thu Feb 14 04:28:49 2013	(r246782)
@@ -78,14 +78,14 @@ static const void (WINAPI *init_init_loc
 static malloc_mutex_t	init_lock = MALLOC_MUTEX_INITIALIZER;
 #endif
 
+#ifdef JEMALLOC_UTRACE
 typedef struct {
 	void	*p;	/* Input pointer (as in realloc(p, s)). */
 	size_t	s;	/* Request size. */
 	void	*r;	/* Result pointer. */
 } malloc_utrace_t;
 
-#ifdef JEMALLOC_UTRACE
-#  define UTRACE(a, b, c) do {						\
+#  define UTRACE1(a, b, c) do {						\
 	if (opt_utrace) {						\
 		malloc_utrace_t ut;					\
 		ut.p = (a);						\
@@ -95,6 +95,38 @@ typedef struct {
 	}								\
 } while (0)
 #else
+#  define UTRACE1(a, b, c)
+#endif
+
+#ifdef JEMALLOC_UTRACE2
+typedef struct {
+	int	ut_type;    /* utrace type UTRACE_MALLOC */
+	int	ut_version;	/* utrace malloc version */
+	void	*p;	/* Input pointer (as in realloc(p, s)). */
+	size_t	s;	/* Request size. */
+	void	*r;	/* Result pointer. */
+	void	*ut_caller;    /* Caller */
+} malloc_utrace2_t;
+
+#  define UTRACE2(a, b, c) do {						\
+	if (opt_utrace2) {						\
+		malloc_utrace2_t ut;					\
+		ut.ut_type = UTRACE_MALLOC;				\
+		ut.ut_version = 2;					\
+		ut.p = (a);						\
+		ut.s = (b);						\
+		ut.r = (c);						\
+		ut.ut_caller = __builtin_return_address(0);		\
+		utrace2(&ut, sizeof(ut));				\
+	}								\
+} while (0)
+#else
+#  define UTRACE2(a, b, c)
+#endif
+
+#if defined(JEMALLOC_UTRACE) || defined(JEMALLOC_UTRACE2)
+#  define UTRACE(a, b, c) do { UTRACE1(a, b, c); UTRACE2(a, b, c); } while (0)
+#else
 #  define UTRACE(a, b, c)
 #endif
 
@@ -975,7 +1007,6 @@ label_return:
 	}
 	if (config_prof && opt_prof && result != NULL)
 		prof_malloc(result, usize, cnt);
-	UTRACE(0, size, result);
 	return (ret);
 }
 
@@ -985,6 +1016,7 @@ je_posix_memalign(void **memptr, size_t 
 	int ret = imemalign(memptr, alignment, size, sizeof(void *));
 	JEMALLOC_VALGRIND_MALLOC(ret == 0, *memptr, isalloc(*memptr,
 	    config_prof), false);
+	UTRACE(0, size, *memptr);
 	return (ret);
 }
 
@@ -1000,6 +1032,7 @@ je_aligned_alloc(size_t alignment, size_
 	}
 	JEMALLOC_VALGRIND_MALLOC(err == 0, ret, isalloc(ret, config_prof),
 	    false);
+	UTRACE(0, size, ret);
 	return (ret);
 }
 
@@ -1265,6 +1298,7 @@ je_memalign(size_t alignment, size_t siz
 	void *ret JEMALLOC_CC_SILENCE_INIT(NULL);
 	imemalign(&ret, alignment, size, 1);
 	JEMALLOC_VALGRIND_MALLOC(ret != NULL, ret, size, false);
+	UTRACE(0, size, ret);
 	return (ret);
 }
 #endif
@@ -1276,6 +1310,7 @@ je_valloc(size_t size)
 	void *ret JEMALLOC_CC_SILENCE_INIT(NULL);
 	imemalign(&ret, PAGE, size, 1);
 	JEMALLOC_VALGRIND_MALLOC(ret != NULL, ret, size, false);
+	UTRACE(0, size, ret);
 	return (ret);
 }
 #endif

Modified: projects/utrace2/contrib/jemalloc/src/stats.c
==============================================================================
--- projects/utrace2/contrib/jemalloc/src/stats.c	Thu Feb 14 02:00:41 2013	(r246781)
+++ projects/utrace2/contrib/jemalloc/src/stats.c	Thu Feb 14 04:28:49 2013	(r246782)
@@ -383,6 +383,7 @@ stats_print(void (*write_cb)(void *, con
 		OPT_WRITE_BOOL(redzone)
 		OPT_WRITE_BOOL(zero)
 		OPT_WRITE_BOOL(utrace)
+		OPT_WRITE_BOOL(utrace2)
 		OPT_WRITE_BOOL(valgrind)
 		OPT_WRITE_BOOL(xmalloc)
 		OPT_WRITE_BOOL(tcache)

Modified: projects/utrace2/lib/libc/stdlib/jemalloc/Symbol.map
==============================================================================
--- projects/utrace2/lib/libc/stdlib/jemalloc/Symbol.map	Thu Feb 14 02:00:41 2013	(r246781)
+++ projects/utrace2/lib/libc/stdlib/jemalloc/Symbol.map	Thu Feb 14 04:28:49 2013	(r246782)
@@ -26,6 +26,7 @@ FBSD_1.3 {
 	sallocm;
 	dallocm;
 	nallocm;
+	/* __jemalloc_opt_utrace;*/
 };
 
 FBSDprivate_1.0 {


More information about the svn-src-projects mailing list