* Nils Carlson ([email protected]) wrote: > Jep, exactly that, multiple probes with different data. Didn't try > adding with different functions.
Could be good to add the "multiple functions" test case eventually. But so far, this patch looks good. Acked-by: Mathieu Desnoyers <[email protected]> > > -----Original Message----- > From: Mathieu Desnoyers [mailto:[email protected]] > Sent: den 2 september 2010 16:09 > To: Nils Carlson > Cc: [email protected] > Subject: Re: [ltt-dev] [PATCH 2/2] Update test-case for tracepoints and add a > new test-case > > * Nils Carlson ([email protected]) wrote: > > Update the test-case for probes to handle a new data pointer in the > > probe function. Also add a new test-case that stress-tests probe > > registration and unregistration. > > Does it test reg. of multiple probes on a tracepoint ? > > Mathieu > > > --- > > configure.ac | 1 + > > tests/Makefile.am | 2 +- > > tests/hello/hello.c | 2 +- > > tests/hello/tp.c | 18 +++++-- > > tests/register_test/Makefile.am | 5 ++ > > tests/register_test/register_test.c | 97 > > +++++++++++++++++++++++++++++++++++ > > tests/register_test/tp.h | 22 ++++++++ > > 7 files changed, 141 insertions(+), 6 deletions(-) create mode > > 100644 tests/register_test/Makefile.am create mode 100644 > > tests/register_test/register_test.c > > create mode 100644 tests/register_test/tp.h > > > > diff --git a/configure.ac b/configure.ac index dee974f..10a02e0 100644 > > --- a/configure.ac > > +++ b/configure.ac > > @@ -122,6 +122,7 @@ AC_CONFIG_FILES([ > > tests/dlopen/Makefile > > tests/same_line_marker/Makefile > > tests/trace_event/Makefile > > + tests/register_test/Makefile > > libustinstr-malloc/Makefile > > libustfork/Makefile > > libustd/Makefile > > diff --git a/tests/Makefile.am b/tests/Makefile.am index > > ab13cd7..1d31c3f 100644 > > --- a/tests/Makefile.am > > +++ b/tests/Makefile.am > > @@ -1,3 +1,3 @@ > > -SUBDIRS = hello hello2 basic basic_long fork simple_include snprintf > > test-nevents test-libustinstr-malloc dlopen same_line_marker > > trace_event > > +SUBDIRS = hello hello2 basic basic_long fork simple_include snprintf > > +test-nevents test-libustinstr-malloc dlopen same_line_marker > > +trace_event register_test > > > > dist_noinst_SCRIPTS = test_loop runtests trace_matches diff --git > > a/tests/hello/hello.c b/tests/hello/hello.c index 86c5c71..8147860 > > 100644 > > --- a/tests/hello/hello.c > > +++ b/tests/hello/hello.c > > @@ -26,8 +26,8 @@ > > > > #include <ust/marker.h> > > #include "usterr.h" > > -#include "tp.h" > > #include "tracer.h" > > +#include "tp.h" > > > > void inthandler(int sig) > > { > > diff --git a/tests/hello/tp.c b/tests/hello/tp.c index > > be10615..3a4c6fc 100644 > > --- a/tests/hello/tp.c > > +++ b/tests/hello/tp.c > > @@ -19,16 +19,26 @@ > > #include <ust/marker.h> > > #include "usterr.h" > > > > +struct hello_trace_struct { > > + char *message; > > +}; > > + > > +struct hello_trace_struct hello_struct = { > > + .message = "ehlo\n", > > +}; > > + > > DEFINE_TRACE(hello_tptest); > > > > -void tptest_probe(int anint) > > +void tptest_probe(void *data, int anint) > > { > > + struct hello_trace_struct *hello; > > + hello=(struct hello_trace_struct *)data; > > DBG("in tracepoint probe..."); > > - trace_mark(ust, tptest, "anint %d", anint); > > + printf("this is the message: %s\n", hello->message); > > } > > > > static void __attribute__((constructor)) init() { > > - DBG("connecting tracepoint..."); > > - register_trace_hello_tptest(tptest_probe); > > + DBG("connecting tracepoint...\n"); > > + register_trace_hello_tptest(tptest_probe, &hello_struct); > > } > > diff --git a/tests/register_test/Makefile.am > > b/tests/register_test/Makefile.am new file mode 100644 index > > 0000000..ff25e08 > > --- /dev/null > > +++ b/tests/register_test/Makefile.am > > @@ -0,0 +1,5 @@ > > +AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/libust > > + > > +noinst_PROGRAMS = register_test > > +register_test_SOURCES = register_test.c tp.h register_test_LDADD = > > +$(top_builddir)/libust/libust.la $(top_builddir)/libust-initializer.o > > diff --git a/tests/register_test/register_test.c > > b/tests/register_test/register_test.c > > new file mode 100644 > > index 0000000..8b65ffb > > --- /dev/null > > +++ b/tests/register_test/register_test.c > > @@ -0,0 +1,97 @@ > > +/* Copyright (C) 2010 Nils Carlson > > + * > > + * 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 */ > > + > > +#include <stdio.h> > > +#include <unistd.h> > > +#include <sys/mman.h> > > +#include <stdarg.h> > > +#include <sys/types.h> > > +#include <sys/stat.h> > > +#include <sys/timerfd.h> > > +#include <fcntl.h> > > +#include <signal.h> > > +#include <pthread.h> > > + > > +#include <ust/marker.h> > > +#include "usterr.h" > > +#include "tracer.h" > > +#include "tp.h" > > + > > +DEFINE_TRACE(hello_tptest); > > + > > + > > +struct hello_trace_struct { > > + char *message; > > +}; > > + > > +struct hello_trace_struct hello_struct = { > > + .message = "ehlo\n", > > +}; > > + > > +void tptest_probe(void *data, int anint) { > > + struct hello_trace_struct *hello; > > + char message[30]; > > + hello=(struct hello_trace_struct *)data; > > + //printf("this is the message: %s\n", hello->message); > > + snprintf(message, 30, "this is the %s\n", hello->message); } > > + > > + > > +#define HELLO_LENGTH 100 > > + > > +static void * register_thread_main(void *data) { > > + int ret, i, j = 0; > > + > > + struct hello_trace_struct hello[HELLO_LENGTH]; > > + > > + for (i=0; i<HELLO_LENGTH; i++) { > > + hello[i].message = malloc(6*sizeof(char)); > > + hello[i].message[0] = 'a'+i%25; > > + memcpy(&hello[i].message[1], "ello", 5); > > + } > > + > > + for (i=0; i<1000; i++) { > > + while (!register_trace_hello_tptest(tptest_probe, > > + &hello[j%HELLO_LENGTH])) { > > + usleep(10); > > + j++; > > + } > > + printf("Registered all\n"); > > + while (!unregister_trace_hello_tptest(tptest_probe, > > + &hello[j%HELLO_LENGTH])) { > > + usleep(10); > > + j++; > > + } > > + printf("Unregistered all\n"); > > + } > > +} > > + > > + > > +int main() > > +{ > > + pthread_t register_thread; > > + int i; > > + > > + pthread_create(®ister_thread, NULL, register_thread_main, NULL); > > + for(i=0; i<1000000; i++) { > > + trace_hello_tptest(i); > > + } > > + > > + return 0; > > +} > > diff --git a/tests/register_test/tp.h b/tests/register_test/tp.h new > > file mode 100644 index 0000000..f34f305 > > --- /dev/null > > +++ b/tests/register_test/tp.h > > @@ -0,0 +1,22 @@ > > +/* Copyright (C) 2009 Pierre-Marc Fournier > > + * > > + * 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 */ > > + > > +#include <ust/tracepoint.h> > > + > > +DECLARE_TRACE(hello_tptest, > > + TP_PROTO(int anint), > > + TP_ARGS(anint)); > > -- > > 1.7.1 > > > > > > _______________________________________________ > > ltt-dev mailing list > > [email protected] > > http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev > > > > -- > Mathieu Desnoyers > Operating System Efficiency R&D Consultant EfficiOS Inc. > http://www.efficios.com > -- Mathieu Desnoyers Operating System Efficiency R&D Consultant EfficiOS Inc. http://www.efficios.com _______________________________________________ ltt-dev mailing list [email protected] http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
