[lttng-dev] [PATCH lttng-ust] Add trace support for calloc and realloc.

Mathieu Desnoyers mathieu.desnoyers at efficios.com
Wed Aug 7 14:35:43 EDT 2013


* Stefan Seefeld (stefan_seefeld at mentor.com) wrote:
> 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.

merged, thanks!

By the way, we usually don't put "dots" at the end of the patch title.
No biggie, I removed it from the changelog.

Thanks,

Mathieu

> 
> 	Stefan
> 
> 
> -- 
> Stefan Seefeld
> CodeSourcery / Mentor Graphics
> http://www.mentor.com/embedded-software/

> From 10b4f91ea710b484a7e31fca68f55a2b58d026cd Mon Sep 17 00:00:00 2001
> From: Stefan Seefeld <stefan_seefeld at mentor.com>
> Date: Wed, 7 Aug 2013 13:05:34 -0400
> Subject: [PATCH] Add trace support for memalign and posix_memalign.
> 
> Signed-off-by: Stefan Seefeld <stefan_seefeld at mentor.com>
> ---
>  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
> 


-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com



More information about the lttng-dev mailing list