From: Nils Carlson Date: Tue, 31 Aug 2010 13:45:08 +0000 (+0200) Subject: Update test-case for tracepoints and add a new test-case X-Git-Tag: v0.8~33 X-Git-Url: http://git.lttng.org/?p=ust.git;a=commitdiff_plain;h=a5f09c2c8efcc5fc047178bef0acb73552cdf390 Update test-case for tracepoints and add a new test-case 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. --- 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 #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 #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 +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#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 + +DECLARE_TRACE(hello_tptest, + TP_PROTO(int anint), + TP_ARGS(anint));