projects
/
lttng-ust.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: sync event enablers before choosing header type
[lttng-ust.git]
/
liblttng-ust-libc-wrapper
/
lttng-ust-malloc.c
diff --git
a/liblttng-ust-libc-wrapper/lttng-ust-malloc.c
b/liblttng-ust-libc-wrapper/lttng-ust-malloc.c
index 54afb1445785381aefeeb658ce3ba30ae573420d..f3e1e19e28e52d8d5fe07d399f6c4741d0d87282 100644
(file)
--- a/
liblttng-ust-libc-wrapper/lttng-ust-malloc.c
+++ b/
liblttng-ust-libc-wrapper/lttng-ust-malloc.c
@@
-9,7
+9,7
@@
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
@@
-18,6
+18,11
@@
*/
#define _GNU_SOURCE
*/
#define _GNU_SOURCE
+/*
+ * Do _not_ define _LGPL_SOURCE because we don't want to create a
+ * circular dependency loop between this malloc wrapper, liburcu and
+ * libc.
+ */
#include <lttng/ust-dlfcn.h>
#include <sys/types.h>
#include <stdio.h>
#include <lttng/ust-dlfcn.h>
#include <sys/types.h>
#include <stdio.h>
@@
-28,9
+33,11
@@
#include <urcu/tls-compat.h>
#include <urcu/arch.h>
#include <lttng/align.h>
#include <urcu/tls-compat.h>
#include <urcu/arch.h>
#include <lttng/align.h>
+#include <helper.h>
#define TRACEPOINT_DEFINE
#define TRACEPOINT_CREATE_PROBES
#define TRACEPOINT_DEFINE
#define TRACEPOINT_CREATE_PROBES
+#define TP_IP_PARAM ip
#include "ust_libc.h"
#define STATIC_CALLOC_LEN 4096
#include "ust_libc.h"
#define STATIC_CALLOC_LEN 4096
@@
-260,7
+267,8
@@
void *malloc(size_t size)
}
retval = cur_alloc.malloc(size);
if (URCU_TLS(malloc_nesting) == 1) {
}
retval = cur_alloc.malloc(size);
if (URCU_TLS(malloc_nesting) == 1) {
- tracepoint(ust_libc, malloc, size, retval);
+ tracepoint(lttng_ust_libc, malloc,
+ size, retval, LTTNG_UST_CALLER_IP());
}
URCU_TLS(malloc_nesting)--;
return retval;
}
URCU_TLS(malloc_nesting)--;
return retval;
@@
-279,7
+287,8
@@
void free(void *ptr)
}
if (URCU_TLS(malloc_nesting) == 1) {
}
if (URCU_TLS(malloc_nesting) == 1) {
- tracepoint(ust_libc, free, ptr);
+ tracepoint(lttng_ust_libc, free,
+ ptr, LTTNG_UST_CALLER_IP());
}
if (cur_alloc.free == NULL) {
}
if (cur_alloc.free == NULL) {
@@
-308,7
+317,8
@@
void *calloc(size_t nmemb, size_t size)
}
retval = cur_alloc.calloc(nmemb, size);
if (URCU_TLS(malloc_nesting) == 1) {
}
retval = cur_alloc.calloc(nmemb, size);
if (URCU_TLS(malloc_nesting) == 1) {
- tracepoint(ust_libc, calloc, nmemb, size, retval);
+ tracepoint(lttng_ust_libc, calloc,
+ nmemb, size, retval, LTTNG_UST_CALLER_IP());
}
URCU_TLS(malloc_nesting)--;
return retval;
}
URCU_TLS(malloc_nesting)--;
return retval;
@@
-360,7
+370,8
@@
void *realloc(void *ptr, size_t size)
retval = cur_alloc.realloc(ptr, size);
end:
if (URCU_TLS(malloc_nesting) == 1) {
retval = cur_alloc.realloc(ptr, size);
end:
if (URCU_TLS(malloc_nesting) == 1) {
- tracepoint(ust_libc, realloc, ptr, size, retval);
+ tracepoint(lttng_ust_libc, realloc,
+ ptr, size, retval, LTTNG_UST_CALLER_IP());
}
URCU_TLS(malloc_nesting)--;
return retval;
}
URCU_TLS(malloc_nesting)--;
return retval;
@@
-380,7
+391,9
@@
void *memalign(size_t alignment, size_t size)
}
retval = cur_alloc.memalign(alignment, size);
if (URCU_TLS(malloc_nesting) == 1) {
}
retval = cur_alloc.memalign(alignment, size);
if (URCU_TLS(malloc_nesting) == 1) {
- tracepoint(ust_libc, memalign, alignment, size, retval);
+ tracepoint(lttng_ust_libc, memalign,
+ alignment, size, retval,
+ LTTNG_UST_CALLER_IP());
}
URCU_TLS(malloc_nesting)--;
return retval;
}
URCU_TLS(malloc_nesting)--;
return retval;
@@
-400,13
+413,20
@@
int posix_memalign(void **memptr, size_t alignment, size_t size)
}
retval = cur_alloc.posix_memalign(memptr, alignment, size);
if (URCU_TLS(malloc_nesting) == 1) {
}
retval = cur_alloc.posix_memalign(memptr, alignment, size);
if (URCU_TLS(malloc_nesting) == 1) {
- tracepoint(ust_libc, posix_memalign, *memptr, alignment, size,
- retval);
+ tracepoint(lttng_ust_libc, posix_memalign,
+ *memptr, alignment, size,
+ retval, LTTNG_UST_CALLER_IP());
}
URCU_TLS(malloc_nesting)--;
return retval;
}
}
URCU_TLS(malloc_nesting)--;
return retval;
}
+static
+void lttng_ust_fixup_malloc_nesting_tls(void)
+{
+ asm volatile ("" : : "m" (URCU_TLS(malloc_nesting)));
+}
+
__attribute__((constructor))
void lttng_ust_malloc_wrapper_init(void)
{
__attribute__((constructor))
void lttng_ust_malloc_wrapper_init(void)
{
@@
-414,6
+434,7
@@
void lttng_ust_malloc_wrapper_init(void)
if (cur_alloc.calloc) {
return;
}
if (cur_alloc.calloc) {
return;
}
+ lttng_ust_fixup_malloc_nesting_tls();
/*
* Ensure the allocator is in place before the process becomes
* multithreaded.
/*
* Ensure the allocator is in place before the process becomes
* multithreaded.
This page took
0.026266 seconds
and
4
git commands to generate.