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;
+}
)
)
+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