Privatize part of marker.h, and type-serializer.h
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 19 May 2011 16:02:19 +0000 (12:02 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 19 May 2011 16:02:19 +0000 (12:02 -0400)
The current interface we publish is ust_marker(), tracepoint() and
TRACEPOINT_EVENT() (and associated _NOARGS, CLASS, INSTANCE and
TRACEPOINT_CREATE_PROBES). Besides that, consider any lower-level API
showing the UST internals as, well, internal.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
include/Makefile.am
include/ust/marker-internal.h [new file with mode: 0644]
include/ust/marker.h
include/ust/tracepoint-internal.h
include/ust/type-serializer.h
include/ust/ust.h
libust/channels.c
libust/marker.c
libust/tracer.h

index 70d6e15027cdcdcbfa17cf676648a09c4074460b..901462795aaeefd9923c8a3c4b913f95b50298fd 100644 (file)
@@ -10,7 +10,6 @@ nobase_include_HEADERS = \
        ust/config.h \
        ust/core.h \
        ust/clock.h \
-       ust/type-serializer.h \
        ust/kcompat/kcompat.h \
        ust/kcompat/compiler.h \
        ust/kcompat/jhash.h \
@@ -20,4 +19,6 @@ nobase_include_HEADERS = \
        ust/ustctl.h \
        ust/ustconsumer.h
 
-noinst_HEADERS = share.h usterr.h ust_snprintf.h usterr_signal_safe.h
+noinst_HEADERS = share.h usterr.h ust_snprintf.h usterr_signal_safe.h \
+       ust/marker-internal.h ust/tracepoint-internal.h \
+       ust/type-serializer.h
diff --git a/include/ust/marker-internal.h b/include/ust/marker-internal.h
new file mode 100644 (file)
index 0000000..0422908
--- /dev/null
@@ -0,0 +1,127 @@
+#ifndef _UST_MARKER_INTERNAL_H
+#define _UST_MARKER_INTERNAL_H
+
+/*
+ * Code markup for dynamic and static tracing. (internal header)
+ *
+ * See Documentation/marker.txt.
+ *
+ * (C) Copyright 2006 Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
+ * (C) Copyright 2009 Pierre-Marc Fournier <pierre-marc dot fournier at polymtl dot ca>
+ * (C) Copyright 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 <stdarg.h>
+#include <bits/wordsize.h>
+#include <urcu-bp.h>
+#include <urcu/list.h>
+#include <ust/core.h>
+#include <ust/kcompat/kcompat.h>
+#include <ust/marker.h>
+
+#define GET_UST_MARKER(name)           (__ust_marker_def_##name)
+
+#define DEFINE_UST_MARKER(name, format)                                        \
+               _DEFINE_UST_MARKER(ust, name, NULL, NULL, format)
+
+#define DEFINE_UST_MARKER_TP(name, tp_name, tp_cb, format)             \
+               _DEFINE_UST_MARKER(ust, name, #tp_name, tp_cb, format)
+
+#define __ust_marker_tp(name, call_private, tp_name, tp_cb,            \
+                       format, args...)                                \
+       do {                                                            \
+               void __check_tp_type(void)                              \
+               {                                                       \
+                       register_trace_##tp_name(tp_cb, call_private);  \
+               }                                                       \
+               DEFINE_UST_MARKER_TP(name, #tp_name, tp_cb, format);    \
+               __ust_marker_check_format(format, ## args);             \
+               (*__ust_marker_def_##name.call)                         \
+                       (&__ust_marker_def_##name, call_private, ## args); \
+       } while (0)
+
+/**
+ * ust_marker_tp - Marker in a tracepoint callback
+ * @name: marker name, not quoted.
+ * @tp_name: tracepoint name, not quoted.
+ * @tp_cb: tracepoint callback. Should have an associated global symbol so it
+ *         is not optimized away by the compiler (should not be static).
+ * @format: format string
+ * @args...: variable argument list
+ *
+ * Places a marker in a tracepoint callback.
+ */
+#define ust_marker_tp(name, tp_name, tp_cb, format, args...)   \
+       __ust_marker_tp(ust, name, NULL, tp_name, tp_cb, format, ## args)
+
+extern void ust_marker_update_probe_range(struct ust_marker * const *begin,
+       struct ust_marker * const *end);
+
+extern void lock_ust_marker(void);
+extern void unlock_ust_marker(void);
+
+extern void ust_marker_compact_event_ids(void);
+
+/*
+ * Connect a probe to a marker.
+ * private data pointer must be a valid allocated memory address, or NULL.
+ */
+extern int ust_marker_probe_register(const char *channel, const char *name,
+       const char *format, ust_marker_probe_func *probe, void *probe_private);
+
+/*
+ * Returns the private data given to ust_marker_probe_register.
+ */
+extern int ust_marker_probe_unregister(const char *channel, const char *name,
+       ust_marker_probe_func *probe, void *probe_private);
+/*
+ * Unregister a marker by providing the registered private data.
+ */
+extern int ust_marker_probe_unregister_private_data(ust_marker_probe_func *probe,
+       void *probe_private);
+
+extern void *ust_marker_get_private_data(const char *channel, const char *name,
+       ust_marker_probe_func *probe, int num);
+
+/*
+ * ust_marker_synchronize_unregister must be called between the last
+ * marker probe unregistration and the first one of
+ * - the end of library exit function
+ * - the free of any resource used by the probes
+ * to ensure the code and data are valid for any possibly running probes.
+ */
+#define ust_marker_synchronize_unregister() synchronize_rcu()
+
+struct ust_marker_iter {
+       struct ust_marker_lib *lib;
+       struct ust_marker * const *ust_marker;
+};
+
+extern void ust_marker_iter_start(struct ust_marker_iter *iter);
+extern void ust_marker_iter_next(struct ust_marker_iter *iter);
+extern void ust_marker_iter_stop(struct ust_marker_iter *iter);
+extern void ust_marker_iter_reset(struct ust_marker_iter *iter);
+extern int ust_marker_get_iter_range(struct ust_marker * const **marker, struct ust_marker * const *begin,
+       struct ust_marker * const *end);
+
+extern void ust_marker_update_process(void);
+extern int is_ust_marker_enabled(const char *channel, const char *name);
+
+extern void ust_marker_set_new_ust_marker_cb(void (*cb)(struct ust_marker *));
+extern void init_ust_marker(void);
+
+#endif /* _UST_MARKER_INTERNAL_H */
index cffa9d30b330e3bbdf6acf6f9e48319cb84277f9..41ae10ab4a07301ed63fc998f8d592dffe2d61e0 100644 (file)
@@ -1,3 +1,6 @@
+#ifndef _UST_MARKER_H
+#define _UST_MARKER_H
+
 /*
  * Code markup for dynamic and static tracing.
  *
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
-#ifndef _UST_MARKER_H
-#define _UST_MARKER_H
-
 #include <stdarg.h>
-#include <ust/core.h>
+#include <bits/wordsize.h>
 #include <urcu/list.h>
+#include <ust/core.h>
 #include <ust/kcompat/kcompat.h>
 
-#include <bits/wordsize.h>
-
 struct ust_marker;
 
 /**
@@ -74,8 +73,6 @@ struct ust_marker {
        void *tp_cb;            /* Optional tracepoint callback */
 };
 
-#define GET_UST_MARKER(name)           (__ust_marker_def_##name)
-
 /*
  * We keep the "channel" as internal field for marker.c *only*. It will be
  * removed soon.
@@ -99,15 +96,9 @@ struct ust_marker {
                  { __ust_marker_empty_function, NULL},                 \
                  NULL, tp_name_str, tp_cb };                           \
                static struct ust_marker * __ust_marker_ptr_##name      \
-                       __attribute__((used, section("__ust_marker_ptrs"))) =   \
+                       __attribute__((used, section("__ust_marker_ptrs"))) = \
                        &__ust_marker_def_##name
 
-#define DEFINE_UST_MARKER(name, format)                                        \
-               _DEFINE_UST_MARKER(ust, name, NULL, NULL, format)
-
-#define DEFINE_UST_MARKER_TP(name, tp_name, tp_cb, format)             \
-               _DEFINE_UST_MARKER(ust, name, #tp_name, tp_cb, format)
-
 /*
  * Make sure the alignment of the structure in the __ust_marker section will
  * not add unwanted padding between the beginning of the section and the
@@ -124,22 +115,6 @@ struct ust_marker {
                                ## args);                               \
        } while (0)
 
-#define __ust_marker_tp(name, call_private, tp_name, tp_cb,            \
-                       format, args...)                                \
-       do {                                                            \
-               void __check_tp_type(void)                              \
-               {                                                       \
-                       register_trace_##tp_name(tp_cb, call_private);  \
-               }                                                       \
-               DEFINE_UST_MARKER_TP(name, #tp_name, tp_cb, format);    \
-               __ust_marker_check_format(format, ## args);             \
-               (*__ust_marker_def_##name.call)                         \
-                       (&__ust_marker_def_##name, call_private, ## args);      \
-       } while (0)
-
-extern void ust_marker_update_probe_range(struct ust_marker * const *begin,
-       struct ust_marker * const *end);
-
 /**
  * ust_marker - Marker using code patching
  * @name: marker name, not quoted.
@@ -156,32 +131,14 @@ void __trace_mark_is_deprecated()
 {
 }
 
-/**
- * ust_marker_tp - Marker in a tracepoint callback
- * @name: marker name, not quoted.
- * @tp_name: tracepoint name, not quoted.
- * @tp_cb: tracepoint callback. Should have an associated global symbol so it
- *         is not optimized away by the compiler (should not be static).
- * @format: format string
- * @args...: variable argument list
- *
- * Places a marker in a tracepoint callback.
- */
-#define ust_marker_tp(name, tp_name, tp_cb, format, args...)   \
-       __ust_marker_tp(ust, name, NULL, tp_name, tp_cb, format, ## args)
-
 /**
  * UST_MARKER_NOARGS - Format string for a marker with no argument.
  */
 #define UST_MARKER_NOARGS " "
 
-extern void lock_ust_marker(void);
-extern void unlock_ust_marker(void);
-
-extern void ust_marker_compact_event_ids(void);
-
 /* To be used for string format validity checking with gcc */
-static inline void __printf(1, 2) ___ust_marker_check_format(const char *fmt, ...)
+static inline
+void __printf(1, 2) ___ust_marker_check_format(const char *fmt, ...)
 {
 }
 
@@ -196,103 +153,44 @@ extern ust_marker_probe_func __ust_marker_empty_function;
 extern void ust_marker_probe_cb(const struct ust_marker *mdata,
        void *call_private, ...);
 
-/*
- * Connect a probe to a marker.
- * private data pointer must be a valid allocated memory address, or NULL.
- */
-extern int ust_marker_probe_register(const char *channel, const char *name,
-       const char *format, ust_marker_probe_func *probe, void *probe_private);
-
-/*
- * Returns the private data given to ust_marker_probe_register.
- */
-extern int ust_marker_probe_unregister(const char *channel, const char *name,
-       ust_marker_probe_func *probe, void *probe_private);
-/*
- * Unregister a marker by providing the registered private data.
- */
-extern int ust_marker_probe_unregister_private_data(ust_marker_probe_func *probe,
-       void *probe_private);
-
-extern void *ust_marker_get_private_data(const char *channel, const char *name,
-       ust_marker_probe_func *probe, int num);
-
-/*
- * ust_marker_synchronize_unregister must be called between the last marker probe
- * unregistration and the first one of
- * - the end of module exit function
- * - the free of any resource used by the probes
- * to ensure the code and data are valid for any possibly running probes.
- */
-#define ust_marker_synchronize_unregister() synchronize_sched()
-
-struct ust_marker_iter {
-//ust//        struct module *module;
-       struct ust_marker_lib *lib;
-       struct ust_marker * const *ust_marker;
-};
-
-extern void ust_marker_iter_start(struct ust_marker_iter *iter);
-extern void ust_marker_iter_next(struct ust_marker_iter *iter);
-extern void ust_marker_iter_stop(struct ust_marker_iter *iter);
-extern void ust_marker_iter_reset(struct ust_marker_iter *iter);
-extern int ust_marker_get_iter_range(struct ust_marker * const **marker, struct ust_marker * const *begin,
-       struct ust_marker * const *end);
-
-extern void ust_marker_update_process(void);
-extern int is_ust_marker_enabled(const char *channel, const char *name);
-
-//ust// #ifdef CONFIG_UST_MARKER_USERSPACE
-//ust// extern void exit_user_ust_marker(struct task_struct *p);
-//ust// #else
-//ust// static inline void exit_user_ust_marker(struct task_struct *p)
-//ust// {
-//ust// }
-//ust// #endif
-
-struct ust_marker_addr {
-       struct ust_marker *marker;
-       void *addr;
-};
-
 struct ust_marker_lib {
        struct ust_marker * const *ust_marker_start;
        int ust_marker_count;
        struct cds_list_head list;
 };
 
-extern int ust_marker_register_lib(struct ust_marker * const *ust_marker_start, int ust_marker_count);
-extern int ust_marker_unregister_lib(struct ust_marker * const *ust_marker_start);
-
 #define UST_MARKER_LIB                                                 \
        extern struct ust_marker * const __start___ust_marker_ptrs[] __attribute__((weak, visibility("hidden"))); \
        extern struct ust_marker * const __stop___ust_marker_ptrs[] __attribute__((weak, visibility("hidden"))); \
        static struct ust_marker * __ust_marker_ptr_dummy               \
                __attribute__((used, section("__ust_marker_ptrs")));    \
                                                                        \
-       static void __attribute__((constructor)) __ust_marker__init(void)       \
+       static void __attribute__((constructor)) __ust_marker__init(void) \
        {                                                               \
                ust_marker_register_lib(__start___ust_marker_ptrs,      \
                                    __stop___ust_marker_ptrs            \
-                                   - __start___ust_marker_ptrs);               \
+                                   - __start___ust_marker_ptrs);       \
        }                                                               \
                                                                        \
-       static void __attribute__((destructor)) __ust_marker__destroy(void)\
+       static void __attribute__((destructor)) __ust_marker__destroy(void) \
        {                                                               \
                ust_marker_unregister_lib(__start___ust_marker_ptrs);   \
        }
 
-extern void ust_marker_set_new_ust_marker_cb(void (*cb)(struct ust_marker *));
-extern void init_ust_marker(void);
+extern
+int ust_marker_register_lib(struct ust_marker * const *ust_marker_start,
+                           int ust_marker_count);
+extern
+int ust_marker_unregister_lib(struct ust_marker * const *ust_marker_start);
 
 /*
- * trace_mark() -- TO BE DEPRECATED
+ * trace_mark() -- DEPRECATED
  * @channel: name prefix, not quoted. Ignored.
  * @name: marker name, not quoted.
  * @format: format string
  * @args...: variable argument list
  *
- * Kept as a compatibility API and will be *DEPRECATED* in favor of
+ * Kept as a compatibility API and is *DEPRECATED* in favor of
  * ust_marker().
  */
 #define trace_mark(channel, name, format, args...)     \
@@ -305,15 +203,15 @@ void __MARKER_LIB_IS_DEPRECATED()
 }
 
 /*
- * MARKER_LIB is kept for backward compatibility and will be
- * *DEPRECATED*. Use UST_MARKER_LIB instead.
+ * MARKER_LIB is kept for backward compatibility and is *DEPRECATED*.
+ * Use UST_MARKER_LIB instead.
  */
 #define MARKER_LIB                     \
        __MARKER_LIB_IS_DEPRECATED();   \
        UST_MARKER_LIB
 
 /**
- * MARKER_NOARGS - Compatibility API. Will be *DEPRECATED*. Use
+ * MARKER_NOARGS - Compatibility API. *DEPRECATED*. Use
  * UST_MARKER_NOARGS instead.
  */
 #define MARK_NOARGS    UST_MARKER_NOARGS
index 6fcc49159a31bfe41fdd9fb1a6c98efe9a49fc81..31b9b863e198e3b2c9a26cd4440a91a19518095c 100644 (file)
@@ -32,6 +32,7 @@
 #include <urcu-bp.h>
 #include <ust/core.h>
 #include <urcu/list.h>
+#include <ust/tracepoint.h>
 
 extern void tracepoint_update_probe_range(struct tracepoint * const *begin,
        struct tracepoint * const *end);
index ef9af1c2a59421baacd7f2b8610cff78a7673628..d4e2a1eb38eacdf53af74610e75b2821cc5b6ce3 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef _LTT_TYPE_SERIALIZER_H
 #define _LTT_TYPE_SERIALIZER_H
 
-//ust// #include "tracer.h"
 #include <ust/marker.h>
+#include <ust/marker-internal.h>
 #include <ust/core.h>
 
 /*
@@ -178,4 +178,5 @@ struct serialize_l4412228 {
        uint64_t f8;
        unsigned char end_field[0];
 } LTT_ALIGN;
+
 #endif /* _LTT_TYPE_SERIALIZER_H */
index 0c7e83fbb1b6f112773fdb199044c577c35ca181..a7da4b36779f81d2e051d8b57ecf30a13a21bd49 100644 (file)
@@ -22,7 +22,6 @@
 #include <ust/processor.h>
 #include <ust/tracepoint.h>
 #include <ust/probe.h>
-#include <ust/type-serializer.h>
 #include <ust/core.h>
 
 #endif /* UST_H */
index 402b91581c370e7560224dc85240e4277514a2fe..85e5944e325db8010e556b5b94f3fa5cdfc32a52 100644 (file)
@@ -25,6 +25,7 @@
 
 #include <stdlib.h>
 #include <ust/marker.h>
+#include <ust/marker-internal.h>
 #include "channels.h"
 #include "usterr_signal_safe.h"
 
index 0149e6804af496adfb5177ac6d05a6ecbd8b0021..33827fdc9026aa0002bec893c3f20867c820c700 100644 (file)
@@ -25,6 +25,7 @@
 
 #include <ust/core.h>
 #include <ust/marker.h>
+#include <ust/marker-internal.h>
 #include <ust/tracepoint.h>
 #include <ust/tracepoint-internal.h>
 
index ed237e34dd89b0d10de53f9817bc74f08b16dd00..1e07027beae5de562b7c64edf00e8726c7efbe79 100644 (file)
@@ -27,6 +27,7 @@
 #include <sys/types.h>
 #include <stdarg.h>
 #include <ust/marker.h>
+#include <ust/marker-internal.h>
 #include <ust/probe.h>
 #include <ust/core.h>
 #include "channels.h"
This page took 0.030635 seconds and 4 git commands to generate.