X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=memleak%2Flttng-malloc-stats.c;fp=memleak%2Flttng-malloc-stats.c;h=7811ea69202bb985591e9f5328ee376409ac129b;hb=1c353010387b92f0fab57622bfb2f5f914d2e6b9;hp=0000000000000000000000000000000000000000;hpb=e975f9f8a83cb33d228739ac3c3cebda10cb0598;p=lttng-tools.git diff --git a/memleak/lttng-malloc-stats.c b/memleak/lttng-malloc-stats.c new file mode 100644 index 000000000..7811ea692 --- /dev/null +++ b/memleak/lttng-malloc-stats.c @@ -0,0 +1,49 @@ +/* + * lttng-malloc-stats.c + * + * LTTng malloc stats printer + * + * Copyright (c) 2013 Mathieu Desnoyers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#define _GNU_SOURCE +#include +#include +#include +#include + +#define STAT_SIGNAL SIGUSR2 + +/* Signal handler */ +static void sighandler(int signo, siginfo_t *siginfo, void *context) +{ + malloc_stats(); +} + +static __attribute__((constructor)) +void print_stats_init(void) +{ + /* Attach signal handler on STAT_SIGNAL */ + struct sigaction act; + int ret; + + act.sa_sigaction = sighandler; + act.sa_flags = SA_SIGINFO | SA_RESTART; + sigemptyset(&act.sa_mask); + ret = sigaction(STAT_SIGNAL, &act, NULL); + assert(!ret); +}