Jep, exactly that, multiple probes with different data. Didn't try adding with different functions.
-----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 _______________________________________________ ltt-dev mailing list [email protected] http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
