[lttng-dev] [PATCH lttng-ust] Move "hello-static-lib" to doc/examples and add non-automake Makefiles

Jérémie Galarneau jeremie.galarneau at efficios.com
Fri Apr 12 11:26:31 EDT 2013


The examples are now automatically built as part of the default make target
and plain Makefiles with no dependency on automake are provided for clarity.

Update the manpage and README to reflect the change and remove lots of trailing
whitespace.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau at efficios.com>
---
 .gitignore                                      |  5 +-
 README                                          | 18 +++--
 configure.ac                                    |  1 -
 doc/examples/Makefile.am                        | 15 ++++
 doc/examples/README                             |  3 +
 doc/examples/demo/Makefile                      | 27 +++++--
 doc/examples/easy-ust/Makefile                  | 30 ++++++--
 doc/examples/hello-static-lib/Makefile          | 53 ++++++++++++++
 doc/examples/hello-static-lib/README            |  3 +
 doc/examples/hello-static-lib/hello.c           | 94 ++++++++++++++++++++++++
 doc/examples/hello-static-lib/tp.c              | 26 +++++++
 doc/examples/hello-static-lib/ust_tests_hello.h | 72 +++++++++++++++++++
 doc/man/lttng-ust.3                             | 64 +++++++++--------
 tests/Makefile.am                               |  2 +-
 tests/demo/README                               |  6 +-
 tests/hello-static-lib/Makefile.am              | 18 -----
 tests/hello-static-lib/README                   |  3 -
 tests/hello-static-lib/hello.c                  | 95 -------------------------
 tests/hello-static-lib/tp.c                     | 26 -------
 tests/hello-static-lib/ust_tests_hello.h        | 72 -------------------
 20 files changed, 362 insertions(+), 271 deletions(-)
 create mode 100644 doc/examples/README
 create mode 100644 doc/examples/hello-static-lib/Makefile
 create mode 100644 doc/examples/hello-static-lib/README
 create mode 100644 doc/examples/hello-static-lib/hello.c
 create mode 100644 doc/examples/hello-static-lib/tp.c
 create mode 100644 doc/examples/hello-static-lib/ust_tests_hello.h
 delete mode 100644 tests/hello-static-lib/Makefile.am
 delete mode 100644 tests/hello-static-lib/README
 delete mode 100644 tests/hello-static-lib/hello.c
 delete mode 100644 tests/hello-static-lib/tp.c
 delete mode 100644 tests/hello-static-lib/ust_tests_hello.h

diff --git a/.gitignore b/.gitignore
index 1065aa3..3d17940 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,6 +31,10 @@ lttng-ust.pc
 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
@@ -39,5 +43,4 @@ tests/ust-multi-test/ust-multi-test
 tests/trace_event/trace_event_test
 tests/tracepoint/benchmark/tracepoint_benchmark
 tests/tracepoint/tracepoint_test
-tests/hello-static-lib/hello
 tests/snprintf/prog
diff --git a/README b/README
index 30ccb34..09dd4c3 100644
--- a/README
+++ b/README
@@ -72,11 +72,13 @@ USAGE:
     - If building the provider directly into the application,
       link the application with "-llttng-ust".
     - If building a static library for the provider, link the static
-      library with "-lllttng-ust".
+      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:
@@ -94,14 +96,18 @@ USAGE:
       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:
 
diff --git a/configure.ac b/configure.ac
index e54cfea..d41df7a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -266,7 +266,6 @@ AC_CONFIG_FILES([
 	tools/Makefile
 	tests/Makefile
 	tests/hello/Makefile
-	tests/hello-static-lib/Makefile
 	tests/hello.cxx/Makefile
 	tests/same_line_tracepoint/Makefile
 	tests/snprintf/Makefile
diff --git a/doc/examples/Makefile.am b/doc/examples/Makefile.am
index 2dc042a..e9dd170 100644
--- a/doc/examples/Makefile.am
+++ b/doc/examples/Makefile.am
@@ -1,6 +1,12 @@
+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 \
@@ -19,3 +25,12 @@ dist_doc_examples_demo_DATA = demo/demo.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
diff --git a/doc/examples/README b/doc/examples/README
new file mode 100644
index 0000000..057311e
--- /dev/null
+++ b/doc/examples/README
@@ -0,0 +1,3 @@
+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.
diff --git a/doc/examples/demo/Makefile b/doc/examples/demo/Makefile
index 41f4321..0c829da 100644
--- a/doc/examples/demo/Makefile
+++ b/doc/examples/demo/Makefile
@@ -9,13 +9,30 @@
 # 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
 
@@ -23,13 +40,13 @@ lttng-ust-provider-ust-tests-demo.o: tp.c tp2.c ust_tests_demo.h ust_tests_demo2
 	$(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 $@ $<
diff --git a/doc/examples/easy-ust/Makefile b/doc/examples/easy-ust/Makefile
index 1e3c941..304632b 100644
--- a/doc/examples/easy-ust/Makefile
+++ b/doc/examples/easy-ust/Makefile
@@ -10,20 +10,36 @@
 # 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 $@ $<
@@ -33,7 +49,7 @@ tp.o: tp.c sample_component_provider.h
 
 html: sample_component_provider.html sample.html tp.html
 
-%.html: %.c 
+%.html: %.c
 	code2html -lc $< $@
 
 %.html : %.h
@@ -41,5 +57,5 @@ html: sample_component_provider.html sample.html tp.html
 
 .PHONY: clean
 clean:
-	rm -f *.html  
+	rm -f *.html
 	rm -f *.o sample
diff --git a/doc/examples/hello-static-lib/Makefile b/doc/examples/hello-static-lib/Makefile
new file mode 100644
index 0000000..81789e2
--- /dev/null
+++ b/doc/examples/hello-static-lib/Makefile
@@ -0,0 +1,53 @@
+# Copyright (C) 2013  Jérémie Galarneau <jeremie.galarneau at 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
diff --git a/doc/examples/hello-static-lib/README b/doc/examples/hello-static-lib/README
new file mode 100644
index 0000000..abb056f
--- /dev/null
+++ b/doc/examples/hello-static-lib/README
@@ -0,0 +1,3 @@
+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.
diff --git a/doc/examples/hello-static-lib/hello.c b/doc/examples/hello-static-lib/hello.c
new file mode 100644
index 0000000..693709d
--- /dev/null
+++ b/doc/examples/hello-static-lib/hello.c
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2009  Pierre-Marc Fournier
+ * Copyright (C) 2011  Mathieu Desnoyers <mathieu.desnoyers at 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;
+}
diff --git a/doc/examples/hello-static-lib/tp.c b/doc/examples/hello-static-lib/tp.c
new file mode 100644
index 0000000..4790965
--- /dev/null
+++ b/doc/examples/hello-static-lib/tp.c
@@ -0,0 +1,26 @@
+/*
+ * tp.c
+ *
+ * Copyright (c) 2011 Mathieu Desnoyers <mathieu.desnoyers at 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"
diff --git a/doc/examples/hello-static-lib/ust_tests_hello.h b/doc/examples/hello-static-lib/ust_tests_hello.h
new file mode 100644
index 0000000..35ea5f5
--- /dev/null
+++ b/doc/examples/hello-static-lib/ust_tests_hello.h
@@ -0,0 +1,72 @@
+#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 at 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
diff --git a/doc/man/lttng-ust.3 b/doc/man/lttng-ust.3
index 5be3cfa..f4ec56f 100644
--- a/doc/man/lttng-ust.3
+++ b/doc/man/lttng-ust.3
@@ -40,11 +40,11 @@ focus on the various types that can be recorded into a trace event:
 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
 	 *
@@ -59,19 +59,19 @@ TRACEPOINT_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
 	 */
@@ -80,7 +80,7 @@ TRACEPOINT_EVENT(
 		 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.
 	 */
@@ -109,14 +109,14 @@ TRACEPOINT_EVENT(
 		/*
 		 * ctf_array: a statically-sized array.
 		 * args: (type, field name, argument expression, value)
-		 */ 
+		 */
 		ctf_array(long, arrfield1, values, 3)
 
 		/*
 		 * ctf_array_text: a statically-sized array, printed as
 		 * a string. No need to be terminated by a null
 		 * character.
-		 */ 
+		 */
 		ctf_array_text(char, arrfield2, text, 10)
 
 		/*
@@ -127,7 +127,7 @@ TRACEPOINT_EVENT(
 		 * unsigned type. As a reminder, "unsigned char" should
 		 * be preferred to "char", since the signedness of
 		 * "char" is implementation-defined.
-		 */ 
+		 */
 		ctf_sequence(char, seqfield1, text,
 			     size_t, textlen)
 
@@ -172,54 +172,54 @@ declared before declaring a TRACEPOINT_LOGLEVEL.
 
 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)
 
@@ -268,8 +268,10 @@ carefully:
       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:
@@ -287,7 +289,7 @@ carefully:
       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
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 425440a..317edcb 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = . hello hello-static-lib same_line_tracepoint snprintf
+SUBDIRS = . hello same_line_tracepoint snprintf
 
 if CXX_WORKS
 SUBDIRS += hello.cxx
diff --git a/tests/demo/README b/tests/demo/README
index 89e5889..674bd3a 100644
--- a/tests/demo/README
+++ b/tests/demo/README
@@ -1,5 +1 @@
-"demo" and "demo-trace" are moved to lttng-tools, under:
-
-	tests/regression/ust/linking/
-
-The "demo-trace" script was renamed to "demo_preload".
+"demo" and "demo-trace" are moved to doc/examples/demo
diff --git a/tests/hello-static-lib/Makefile.am b/tests/hello-static-lib/Makefile.am
deleted file mode 100644
index 699845b..0000000
--- a/tests/hello-static-lib/Makefile.am
+++ /dev/null
@@ -1,18 +0,0 @@
-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
diff --git a/tests/hello-static-lib/README b/tests/hello-static-lib/README
deleted file mode 100644
index abb056f..0000000
--- a/tests/hello-static-lib/README
+++ /dev/null
@@ -1,3 +0,0 @@
-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.
diff --git a/tests/hello-static-lib/hello.c b/tests/hello-static-lib/hello.c
deleted file mode 100644
index 584d3f7..0000000
--- a/tests/hello-static-lib/hello.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (C) 2009  Pierre-Marc Fournier
- * Copyright (C) 2011  Mathieu Desnoyers <mathieu.desnoyers at 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;
-}
diff --git a/tests/hello-static-lib/tp.c b/tests/hello-static-lib/tp.c
deleted file mode 100644
index 4790965..0000000
--- a/tests/hello-static-lib/tp.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * tp.c
- *
- * Copyright (c) 2011 Mathieu Desnoyers <mathieu.desnoyers at 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"
diff --git a/tests/hello-static-lib/ust_tests_hello.h b/tests/hello-static-lib/ust_tests_hello.h
deleted file mode 100644
index 35ea5f5..0000000
--- a/tests/hello-static-lib/ust_tests_hello.h
+++ /dev/null
@@ -1,72 +0,0 @@
-#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 at 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
-- 
1.8.2.1




More information about the lttng-dev mailing list