ustctl/ustctl
ust-consumerd/ust-consumerd
+doc/examples/demo/demo
+doc/examples/easy-ust/sample
+doc/examples/hello-static-lib/hello
+
tests/hello/hello
tests/hello.cxx/hello
tests/same_line_tracepoint/same_line_tracepoint
tests/trace_event/trace_event_test
tests/tracepoint/benchmark/tracepoint_benchmark
tests/tracepoint/tracepoint_test
-tests/hello-static-lib/hello
tests/snprintf/prog
library with "-llttng-ust".
- Include the tracepoint provider header into all C files using
the provider.
- - Example:
- - tests/hello/ hello.c tp.c ust_tests_hello.h Makefile.example.*
+ - Examples:
+ - doc/examples/easy-ust/ sample.c sample_component_provider.h
+ tp.c Makefile
+ - doc/examples/hello-static-lib/ hello.c tp.c ust_test_hello.h
+ Makefile
2) Compile the Tracepoint Provider separately from the application,
using dynamic linking:
needed. Another way is to dlopen the tracepoint probe when needed
by the application.
- Example:
- - tests/demo/ demo.c tp*.c ust_tests_demo*.h demo-trace
+ - doc/examples/demo demo.c tp*.c ust_tests_demo*.h demo-trace Makefile
- - Enable instrumentation and control tracing with the "lttng" command
- from lttng-tools. See lttng-tools doc/quickstart.txt.
- Note about dlclose() usage: it is not safe to use dlclose on a
provider shared object that is being actively used for tracing due
to a lack of reference counting from lttng-ust to the used shared
object.
+ - Enable instrumentation and control tracing with the "lttng" command
+ from lttng-tools. See lttng-tools doc/quickstart.txt.
+ - Note for C++ support: although an application instrumented with
+ tracepoints can be compiled with g++, tracepoint probes should be
+ compiled with gcc (only tested with gcc so far).
+
ENVIRONMENT VARIABLES:
tools/Makefile
tests/Makefile
tests/hello/Makefile
- tests/hello-static-lib/Makefile
tests/hello.cxx/Makefile
tests/same_line_tracepoint/Makefile
tests/snprintf/Makefile
+SUBDIRS = easy-ust demo hello-static-lib
+
+doc_examplesdir = ${docdir}/examples
doc_examples_easy_ustdir = ${docdir}/examples/easy-ust
doc_examples_gen_tpdir = ${docdir}/examples/gen-tp
doc_examples_demodir = ${docdir}/examples/demo
+doc_examples_hello_static_libdir = ${docdir}/examples/hello-static-lib
+
+dist_doc_examples_DATA = README
dist_doc_examples_easy_ust_DATA = easy-ust/Makefile \
easy-ust/sample.c \
demo/ust_tests_demo2.h \
demo/ust_tests_demo3.h \
demo/ust_tests_demo.h
+
+dist_doc_examples_hello_static_lib_DATA = hello-static-lib/Makefile \
+ hello-static-lib/hello.c \
+ hello-static-lib/README \
+ hello-static-lib/ust_tests_hello.h \
+ hello-static-lib/tp.c
+
+BUILD_EXAMPLES_FROM_TREE = 1
+export
--- /dev/null
+To build the examples from the source tree, the BUILD_EXAMPLES_FROM_TREE
+environment variable must be defined. This will ensure the examples'
+Makefiles use the source tree's public header files and binaries.
# granted, provided the above notices are retained, and a notice that
# the code was modified is included with the above copyright notice.
-# This Makefile is not using automake so that people may see how to build
-# a program and tracepoint provider probes as stand-alone shared objects.
+# This Makefile is not using automake so that users may see how to build
+# a program with tracepoint provider probes as stand-alone shared objects.
CC = gcc
LIBS = -ldl # On Linux
#LIBS = -lc # On BSD
-CFLAGS = -I.
+CFLAGS += -I.
+
+# Only necessary when building from the source tree and lttng-ust is not
+# installed
+ifdef BUILD_EXAMPLES_FROM_TREE
+CFLAGS += -I../../../include/
+LIBLTTNG_UST_PATH = ../../../liblttng-ust/.libs/
+LDFLAGS += -L$(LIBLTTNG_UST_PATH) -Wl,-rpath='$$ORIGIN/$(LIBLTTNG_UST_PATH)'
+
+# Third-party Makefiles have to define these targets to integrate with an
+# automake project
+EMPTY_AUTOMAKE_TARGETS = distdir install install-data install-exec uninstall \
+ install-dvi install-html install-info install-ps install-pdf \
+ installdirs check installcheck mostlyclean distclean maintainer-clean \
+ dvi html pdf ps info tags ctags
+.PHONY: $(EMPTY_AUTOMAKE_TARGETS)
+$(EMPTY_AUTOMAKE_TARGETS):
+endif
all: demo lttng-ust-provider-ust-tests-demo.so lttng-ust-provider-ust-tests-demo3.so
$(CC) $(CFLAGS) -fpic -c -o $@ $<
lttng-ust-provider-ust-tests-demo.so: lttng-ust-provider-ust-tests-demo.o
- $(CC) -shared -o $@ -llttng-ust $<
+ $(CC) -shared -o $@ $(LDFLAGS) -llttng-ust $<
lttng-ust-provider-ust-tests-demo3.o: tp3.c ust_tests_demo3.h
$(CC) $(CFLAGS) -fpic -c -o $@ $<
lttng-ust-provider-ust-tests-demo3.so: lttng-ust-provider-ust-tests-demo3.o
- $(CC) -shared -o $@ -llttng-ust $<
+ $(CC) -shared -o $@ $(LDFLAGS) -llttng-ust $<
demo.o: demo.c
$(CC) $(CFLAGS) -c -o $@ $<
# granted, provided the above notices are retained, and a notice that
# the code was modified is included with the above copyright notice.
-# This makefile is not using automake so that people can see how to make
-# simply. It builds a program with a statically embedded tracepoint
-# provider probe.
+# This makefile is not using automake so that users can see how to build
+# a program with a statically embedded tracepoint provider probe.
# the "html" target helps for documentation (req. code2html)
CC = gcc
LIBS = -ldl -llttng-ust # On Linux
#LIBS = -lc -llttng-ust # On BSD
-CFLAGS = -I.
+CFLAGS += -I.
+
+# Only necessary when building from the source tree and lttng-ust is not
+# installed
+ifdef BUILD_EXAMPLES_FROM_TREE
+CFLAGS += -I../../../include/
+LIBLTTNG_UST_PATH = ../../../liblttng-ust/.libs/
+LDFLAGS += -L$(LIBLTTNG_UST_PATH) -Wl,-rpath='$$ORIGIN/$(LIBLTTNG_UST_PATH)'
+
+# Third-party Makefiles have to define these targets to integrate with an
+# automake project
+EMPTY_AUTOMAKE_TARGETS = distdir install install-data install-exec uninstall \
+ install-dvi install-html install-info install-ps install-pdf \
+ installdirs check installcheck mostlyclean distclean maintainer-clean \
+ dvi pdf ps info tags ctags
+.PHONY: $(EMPTY_AUTOMAKE_TARGETS)
+$(EMPTY_AUTOMAKE_TARGETS):
+endif
all: sample
sample: sample.o tp.o
- $(CC) -o $@ $^ $(LIBS)
+ $(CC) -o $@ $^ $(LDFLAGS) $(LIBS)
sample.o: sample.c sample_component_provider.h
$(CC) $(CFLAGS) -c -o $@ $<
html: sample_component_provider.html sample.html tp.html
-%.html: %.c
+%.html: %.c
code2html -lc $< $@
%.html : %.h
.PHONY: clean
clean:
- rm -f *.html
+ rm -f *.html
rm -f *.o sample
--- /dev/null
+# Copyright (C) 2013 Jérémie Galarneau <jeremie.galarneau@efficios.com>
+#
+# THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
+# OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
+#
+# Permission is hereby granted to use or copy this program for any
+# purpose, provided the above notices are retained on all copies.
+# Permission to modify the code and to distribute modified code is
+# granted, provided the above notices are retained, and a notice that
+# the code was modified is included with the above copyright notice.
+
+# This Makefile is not using automake so that users may see how to build
+# a program with tracepoint provider probes compiled as static libraries.
+
+CC = gcc
+CFLAGS += -I.
+LIBS = -ldl -llttng-ust # On Linux
+#LIBS = -lc -llttng-ust # On BSD
+
+# Only necessary when building from the source tree and lttng-ust is not
+# installed
+ifdef BUILD_EXAMPLES_FROM_TREE
+CFLAGS += -I../../../include/
+LIBLTTNG_UST_PATH = ../../../liblttng-ust/.libs/
+LDFLAGS += -L$(LIBLTTNG_UST_PATH) -Wl,-rpath='$$ORIGIN/$(LIBLTTNG_UST_PATH)'
+
+# Third-party Makefiles have to define these targets to integrate with an
+# automake project
+EMPTY_AUTOMAKE_TARGETS = distdir install install-data install-exec uninstall \
+ install-dvi install-html install-info install-ps install-pdf \
+ installdirs check installcheck mostlyclean distclean maintainer-clean \
+ dvi html pdf ps info tags ctags
+.PHONY: $(EMPTY_AUTOMAKE_TARGETS)
+$(EMPTY_AUTOMAKE_TARGETS):
+endif
+
+all: hello
+
+lttng-ust-provider-hello.o: tp.c ust_tests_hello.h
+ $(CC) $(CFLAGS) -c -o $@ $<
+
+lttng-ust-provider-hello.a: lttng-ust-provider-hello.o
+ ar -rc $@ $<
+
+hello.o: hello.c
+ $(CC) $(CFLAGS) -c -o $@ $<
+
+hello: hello.o lttng-ust-provider-hello.a
+ $(CC) -o $@ $(LDFLAGS) $(LIBS) $^
+
+.PHONY: clean
+clean:
+ rm -f *.o *.a hello
--- /dev/null
+This is a "hello world" application used to verify that an instrumented
+program can be built successfully and linked with tracepoint providers
+built as a separate static library.
--- /dev/null
+/*
+ * Copyright (C) 2009 Pierre-Marc Fournier
+ * Copyright (C) 2011 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+ *
+ * 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; version 2.1 of
+ * the License.
+ *
+ * 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 <fcntl.h>
+#include <signal.h>
+#include <string.h>
+#include <arpa/inet.h>
+#include <stdlib.h>
+
+#define TRACEPOINT_DEFINE
+#include "ust_tests_hello.h"
+
+void inthandler(int sig)
+{
+ printf("in SIGUSR1 handler\n");
+ tracepoint(ust_tests_hello, tptest_sighandler);
+}
+
+int init_int_handler(void)
+{
+ int result;
+ struct sigaction act;
+
+ memset(&act, 0, sizeof(act));
+ result = sigemptyset(&act.sa_mask);
+ if (result == -1) {
+ perror("sigemptyset");
+ return -1;
+ }
+
+ act.sa_handler = inthandler;
+ act.sa_flags = SA_RESTART;
+
+ /* Only defer ourselves. Also, try to restart interrupted
+ * syscalls to disturb the traced program as little as possible.
+ */
+ result = sigaction(SIGUSR1, &act, NULL);
+ if (result == -1) {
+ perror("sigaction");
+ return -1;
+ }
+
+ return 0;
+}
+
+int main(int argc, char **argv)
+{
+ int i, netint;
+ long values[] = { 1, 2, 3 };
+ char text[10] = "test";
+ double dbl = 2.0;
+ float flt = 2222.0;
+ int delay = 0;
+
+ init_int_handler();
+
+ if (argc == 2)
+ delay = atoi(argv[1]);
+
+ fprintf(stderr, "Hello, World!\n");
+
+ sleep(delay);
+
+ fprintf(stderr, "Tracing... ");
+ for (i = 0; i < 1000000; i++) {
+ netint = htonl(i);
+ tracepoint(ust_tests_hello, tptest, i, netint, values,
+ text, strlen(text), dbl, flt);
+ }
+ fprintf(stderr, " done.\n");
+ return 0;
+}
--- /dev/null
+/*
+ * tp.c
+ *
+ * Copyright (c) 2011 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#define TRACEPOINT_CREATE_PROBES
+#include "ust_tests_hello.h"
--- /dev/null
+#undef TRACEPOINT_PROVIDER
+#define TRACEPOINT_PROVIDER ust_tests_hello
+
+#if !defined(_TRACEPOINT_UST_TESTS_HELLO_H) || defined(TRACEPOINT_HEADER_MULTI_READ)
+#define _TRACEPOINT_UST_TESTS_HELLO_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Copyright (C) 2011 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#include <lttng/tracepoint.h>
+
+TRACEPOINT_EVENT(ust_tests_hello, tptest,
+ TP_ARGS(int, anint, int, netint, long *, values,
+ char *, text, size_t, textlen,
+ double, doublearg, float, floatarg),
+ TP_FIELDS(
+ ctf_integer(int, intfield, anint)
+ ctf_integer_hex(int, intfield2, anint)
+ ctf_integer(long, longfield, anint)
+ ctf_integer_network(int, netintfield, netint)
+ ctf_integer_network_hex(int, netintfieldhex, netint)
+ ctf_array(long, arrfield1, values, 3)
+ ctf_array_text(char, arrfield2, text, 10)
+ ctf_sequence(char, seqfield1, text,
+ size_t, textlen)
+ ctf_sequence_text(char, seqfield2, text,
+ size_t, textlen)
+ ctf_string(stringfield, text)
+ ctf_float(float, floatfield, floatarg)
+ ctf_float(double, doublefield, doublearg)
+ )
+)
+
+TRACEPOINT_EVENT(ust_tests_hello, tptest_sighandler,
+ TP_ARGS(),
+ TP_FIELDS()
+)
+
+#endif /* _TRACEPOINT_UST_TESTS_HELLO_H */
+
+#undef TRACEPOINT_INCLUDE
+#define TRACEPOINT_INCLUDE "./ust_tests_hello.h"
+
+/* This part must be outside ifdef protection */
+#include <lttng/tracepoint-event.h>
+
+#ifdef __cplusplus
+}
+#endif
TRACEPOINT_EVENT(
/*
* provider name, not a variable but a string starting with a
- * letter and containing either letters, numbers or underscores.
+ * letter and containing either letters, numbers or underscores.
* Needs to be the same as TRACEPOINT_PROVIDER. Needs to
* follow the namespacing guide-lines in lttng/tracepoint.h:
- *
- * Must be included before include tracepoint provider
+ *
+ * Must be included before include tracepoint provider
* ex.: project_event
* ex.: project_component_event
*
/*
* tracepoint name, same format as sample provider. Does not
* need to be declared before. in this case the name is
- * "message"
+ * "message"
*/
message,
/*
- * TP_ARGS macro contains the arguments passed for the tracepoint
+ * TP_ARGS macro contains the arguments passed for the tracepoint
* it is in the following format
* TP_ARGS(type1, name1, type2, name2, ... type10,
name10)
- * where there can be from zero to ten elements.
- * typeN is the datatype, such as int, struct or double **.
+ * where there can be from zero to ten elements.
+ * typeN is the datatype, such as int, struct or double **.
* name is the variable name (in "int myInt" the name would be
- * myint)
+ * myint)
* TP_ARGS() is valid to mean no arguments
* TP_ARGS(void) is valid too
*/
double, doublearg, float, floatarg),
/*
- * TP_FIELDS describes how to write the fields of the trace event.
+ * TP_FIELDS describes how to write the fields of the trace event.
* You can put expressions in the "argument expression" area,
* typically using the input arguments from TP_ARGS.
*/
/*
* ctf_array: a statically-sized array.
* args: (type, field name, argument expression, value)
- */
+ */
ctf_array(long, arrfield1, values, 3)
/*
* a string. No need to be terminated by a null
* character.
* Behavior is undefined if "text" argument is NULL.
- */
+ */
ctf_array_text(char, arrfield2, text, 10)
/*
* be preferred to "char", since the signedness of
* "char" is implementation-defined.
* Behavior is undefined if "text" argument is NULL.
- */
+ */
ctf_sequence(char, seqfield1, text,
size_t, textlen)
The loglevels go from 0 to 14. Higher numbers imply the most verbosity
(higher event throughput expected.
-
+
Loglevels 0 through 6, and loglevel 14, match syslog(3) loglevels
semantic. Loglevels 7 through 13 offer more fine-grained selection of
debug information.
-
+
TRACE_EMERG 0
system is unusable
-
+
TRACE_ALERT 1
action must be taken immediately
-
+
TRACE_CRIT 2
critical conditions
-
+
TRACE_ERR 3
error conditions
-
+
TRACE_WARNING 4
warning conditions
-
+
TRACE_NOTICE 5
normal, but significant, condition
-
+
TRACE_INFO 6
informational message
-
+
TRACE_DEBUG_SYSTEM 7
debug information with system-level scope (set of programs)
-
+
TRACE_DEBUG_PROGRAM 8
debug information with program-level scope (set of processes)
-
+
TRACE_DEBUG_PROCESS 9
debug information with process-level scope (set of modules)
-
+
TRACE_DEBUG_MODULE 10
debug information with module (executable/library) scope (set of
units)
-
+
TRACE_DEBUG_UNIT 11
debug information with compilation unit scope (set of functions)
-
+
TRACE_DEBUG_FUNCTION 12
debug information with function-level scope
-
+
TRACE_DEBUG_LINE 13
debug information with line-level scope (TRACEPOINT_EVENT default)
-
+
TRACE_DEBUG 14
debug-level message (trace_printf default)
library with "\-llttng-ust".
- Include the tracepoint provider header into all C files using
the provider.
- - Example:
- - tests/hello/ hello.c tp.c ust_tests_hello.h Makefile.example
+ - Examples:
+ - doc/examples/easy-ust/ sample.c sample_component_provider.h tp.c
+ Makefile
+ - doc/examples/hello-static-lib/ hello.c tp.c ust_test_hello.h Makefile
2) Compile the Tracepoint Provider separately from the application,
using dynamic linking:
needed. Another way is to dlopen the tracepoint probe when needed
by the application.
- Example:
- - doc/examples/demo demo.c tp*.c ust_tests_demo*.h demo-trace
+ - doc/examples/demo demo.c tp*.c ust_tests_demo*.h demo-trace Makefile
- Note about dlclose() usage: it is not safe to use dlclose on a
provider shared object that is being actively used for tracing due
-SUBDIRS = . hello hello-static-lib same_line_tracepoint snprintf
+SUBDIRS = . hello same_line_tracepoint snprintf
if CXX_WORKS
SUBDIRS += hello.cxx
+++ /dev/null
-"demo" and "demo-trace" are moved to lttng-tools, under:
-
- tests/regression/ust/linking/
-
-The "demo-trace" script was renamed to "demo_preload".
+++ /dev/null
-AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include -Wsystem-headers
-
-noinst_LTLIBRARIES = liblttng-ust-provider-ust-test-hello.la
-liblttng_ust_provider_ust_test_hello_la_SOURCES = \
- tp.c ust_tests_hello.h
-liblttng_ust_provider_ust_test_hello_la_LIBADD = \
- $(top_builddir)/liblttng-ust/liblttng-ust.la
-
-noinst_PROGRAMS = hello
-hello_SOURCES = hello.c
-hello_LDADD = liblttng-ust-provider-ust-test-hello.la
-
-if LTTNG_UST_BUILD_WITH_LIBDL
-hello_LDADD += -ldl
-endif
-if LTTNG_UST_BUILD_WITH_LIBC_DL
-hello_LDADD += -lc
-endif
+++ /dev/null
-This is a "hello world" application used to verify that an instrumented
-program can be built successfully and linked with tracepoint providers
-built as a separate static library.
+++ /dev/null
-/*
- * Copyright (C) 2009 Pierre-Marc Fournier
- * Copyright (C) 2011 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
- *
- * 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; version 2.1 of
- * the License.
- *
- * 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 <fcntl.h>
-#include <signal.h>
-#include <string.h>
-#include <arpa/inet.h>
-#include <stdlib.h>
-
-#define TRACEPOINT_DEFINE
-#include "ust_tests_hello.h"
-
-void inthandler(int sig)
-{
- printf("in SIGUSR1 handler\n");
- tracepoint(ust_tests_hello, tptest_sighandler);
-}
-
-int init_int_handler(void)
-{
- int result;
- struct sigaction act;
-
- memset(&act, 0, sizeof(act));
- result = sigemptyset(&act.sa_mask);
- if (result == -1) {
- perror("sigemptyset");
- return -1;
- }
-
- act.sa_handler = inthandler;
- act.sa_flags = SA_RESTART;
-
- /* Only defer ourselves. Also, try to restart interrupted
- * syscalls to disturb the traced program as little as possible.
- */
- result = sigaction(SIGUSR1, &act, NULL);
- if (result == -1) {
- perror("sigaction");
- return -1;
- }
-
- return 0;
-}
-
-int main(int argc, char **argv)
-{
- int i, netint;
- long values[] = { 1, 2, 3 };
- char text[10] = "test";
- double dbl = 2.0;
- float flt = 2222.0;
- int delay = 0;
-
- init_int_handler();
-
- if (argc == 2)
- delay = atoi(argv[1]);
-
- fprintf(stderr, "Hello, World!\n");
-
- sleep(delay);
-
- fprintf(stderr, "Tracing... ");
- for (i = 0; i < 1000000; i++) {
- netint = htonl(i);
- tracepoint(ust_tests_hello, tptest, i, netint, values,
- text, strlen(text), dbl, flt);
- //usleep(100000);
- }
- fprintf(stderr, " done.\n");
- return 0;
-}
+++ /dev/null
-/*
- * tp.c
- *
- * Copyright (c) 2011 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#define TRACEPOINT_CREATE_PROBES
-#include "ust_tests_hello.h"
+++ /dev/null
-#undef TRACEPOINT_PROVIDER
-#define TRACEPOINT_PROVIDER ust_tests_hello
-
-#if !defined(_TRACEPOINT_UST_TESTS_HELLO_H) || defined(TRACEPOINT_HEADER_MULTI_READ)
-#define _TRACEPOINT_UST_TESTS_HELLO_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Copyright (C) 2011 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include <lttng/tracepoint.h>
-
-TRACEPOINT_EVENT(ust_tests_hello, tptest,
- TP_ARGS(int, anint, int, netint, long *, values,
- char *, text, size_t, textlen,
- double, doublearg, float, floatarg),
- TP_FIELDS(
- ctf_integer(int, intfield, anint)
- ctf_integer_hex(int, intfield2, anint)
- ctf_integer(long, longfield, anint)
- ctf_integer_network(int, netintfield, netint)
- ctf_integer_network_hex(int, netintfieldhex, netint)
- ctf_array(long, arrfield1, values, 3)
- ctf_array_text(char, arrfield2, text, 10)
- ctf_sequence(char, seqfield1, text,
- size_t, textlen)
- ctf_sequence_text(char, seqfield2, text,
- size_t, textlen)
- ctf_string(stringfield, text)
- ctf_float(float, floatfield, floatarg)
- ctf_float(double, doublefield, doublearg)
- )
-)
-
-TRACEPOINT_EVENT(ust_tests_hello, tptest_sighandler,
- TP_ARGS(),
- TP_FIELDS()
-)
-
-#endif /* _TRACEPOINT_UST_TESTS_HELLO_H */
-
-#undef TRACEPOINT_INCLUDE
-#define TRACEPOINT_INCLUDE "./ust_tests_hello.h"
-
-/* This part must be outside ifdef protection */
-#include <lttng/tracepoint-event.h>
-
-#ifdef __cplusplus
-}
-#endif