X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=liblttng-ust-libc-wrapper%2Flttng-ust-malloc.c;h=33ed18be09d5ea48eb5f0cabd73ce27ca151da46;hb=86a4e97112c40b1ec823c60de8138d6bb55262fe;hp=4fe8fa97324e92ca14ac7edcd5efaf8b683b2ab8;hpb=4c3536e01190b118e0889ebb991b0eea6f98260e;p=lttng-ust.git diff --git a/liblttng-ust-libc-wrapper/lttng-ust-malloc.c b/liblttng-ust-libc-wrapper/lttng-ust-malloc.c index 4fe8fa97..33ed18be 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; +}