On 08/07/2013 11:50 AM, Mathieu Desnoyers wrote:
> I notice that memalign and posix_memalign are missing. Do you have plans
> to add them ?
Here is a patch adding those two.
Stefan
--
Stefan Seefeld
CodeSourcery / Mentor Graphics
http://www.mentor.com/embedded-software/
>From 10b4f91ea710b484a7e31fca68f55a2b58d026cd Mon Sep 17 00:00:00 2001
From: Stefan Seefeld <[email protected]>
Date: Wed, 7 Aug 2013 13:05:34 -0400
Subject: [PATCH] Add trace support for memalign and posix_memalign.
Signed-off-by: Stefan Seefeld <[email protected]>
---
liblttng-ust-libc-wrapper/lttng-ust-malloc.c | 34 ++++++++++++++++++++++++++++
liblttng-ust-libc-wrapper/ust_libc.h | 19 ++++++++++++++++
2 files changed, 53 insertions(+)
diff --git a/liblttng-ust-libc-wrapper/lttng-ust-malloc.c b/liblttng-ust-libc-wrapper/lttng-ust-malloc.c
index 4fe8fa9..33ed18b 100644
--- a/liblttng-ust-libc-wrapper/lttng-ust-malloc.c
+++ b/liblttng-ust-libc-wrapper/lttng-ust-malloc.c
@@ -133,3 +133,37 @@ void *realloc(void *ptr, size_t size)
tracepoint(ust_libc, realloc, ptr, size, retval);
return retval;
}
+
+void *memalign(size_t alignment, size_t size)
+{
+ static void *(*plibc_memalign)(size_t alignment, size_t size);
+ void *retval;
+
+ if (plibc_memalign == NULL) {
+ plibc_memalign = dlsym(RTLD_NEXT, "memalign");
+ if (plibc_memalign == NULL) {
+ fprintf(stderr, "memalignwrap: unable to find memalign\n");
+ return NULL;
+ }
+ }
+ retval = plibc_memalign(alignment, size);
+ tracepoint(ust_libc, memalign, alignment, size, retval);
+ return retval;
+}
+
+int posix_memalign(void **memptr, size_t alignment, size_t size)
+{
+ static int(*plibc_posix_memalign)(void **memptr, size_t alignment, size_t size);
+ int retval;
+
+ if (plibc_posix_memalign == NULL) {
+ plibc_posix_memalign = dlsym(RTLD_NEXT, "posix_memalign");
+ if (plibc_posix_memalign == NULL) {
+ fprintf(stderr, "posix_memalignwrap: unable to find posix_memalign\n");
+ return ENOMEM;
+ }
+ }
+ retval = plibc_posix_memalign(memptr, alignment, size);
+ tracepoint(ust_libc, posix_memalign, *memptr, alignment, size, retval);
+ return retval;
+}
diff --git a/liblttng-ust-libc-wrapper/ust_libc.h b/liblttng-ust-libc-wrapper/ust_libc.h
index d2096a3..a8ff9c6 100644
--- a/liblttng-ust-libc-wrapper/ust_libc.h
+++ b/liblttng-ust-libc-wrapper/ust_libc.h
@@ -65,6 +65,25 @@ TRACEPOINT_EVENT(ust_libc, realloc,
)
)
+TRACEPOINT_EVENT(ust_libc, memalign,
+ TP_ARGS(size_t, alignment, size_t, size, void *, ptr),
+ TP_FIELDS(
+ ctf_integer(size_t, alignment, alignment)
+ ctf_integer(size_t, size, size)
+ ctf_integer_hex(void *, ptr, ptr)
+ )
+)
+
+TRACEPOINT_EVENT(ust_libc, posix_memalign,
+ TP_ARGS(void *, out_ptr, size_t, alignment, size_t, size, int, result),
+ TP_FIELDS(
+ ctf_integer_hex(void *, out_ptr, out_ptr)
+ ctf_integer(size_t, alignment, alignment)
+ ctf_integer(size_t, size, size)
+ ctf_integer(int, result, result)
+ )
+)
+
#endif /* _TRACEPOINT_UST_LIBC_H */
#undef TRACEPOINT_INCLUDE
--
1.8.3.1
_______________________________________________
lttng-dev mailing list
[email protected]
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev