X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=include%2Flttng%2Fdefine_trace.h;fp=include%2Flttng%2Fdefine_trace.h;h=b0a5cb6776aa26dd6934637f0b580e6039439318;hb=3b4aafcbbef722c5d04f2fe06a47c47d4d23eda0;hp=0000000000000000000000000000000000000000;hpb=a071f25d89c4ef76ffe7bdfcaeb783bc9cfc1211;p=lttng-modules.git diff --git a/include/lttng/define_trace.h b/include/lttng/define_trace.h new file mode 100644 index 00000000..b0a5cb67 --- /dev/null +++ b/include/lttng/define_trace.h @@ -0,0 +1,121 @@ +/* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only) + * + * lttng/define_trace.h + * + * Copyright (C) 2009 Steven Rostedt + * Copyright (C) 2010-2012 Mathieu Desnoyers + */ + +/* + * Trace files that want to automate creationg of all tracepoints defined + * in their file should include this file. The following are macros that the + * trace file may define: + * + * TRACE_SYSTEM defines the system the tracepoint is for + * + * TRACE_INCLUDE_FILE if the file name is something other than TRACE_SYSTEM.h + * This macro may be defined to tell define_trace.h what file to include. + * Note, leave off the ".h". + * + * TRACE_INCLUDE_PATH if the path is something other than core kernel include/trace + * then this macro can define the path to use. Note, the path is relative to + * define_trace.h, not the file including it. Full path names for out of tree + * modules must be used. + */ + +#ifdef CREATE_TRACE_POINTS + +/* Prevent recursion */ +#undef CREATE_TRACE_POINTS + +#include + +#undef LTTNG_TRACEPOINT_EVENT_MAP +#define LTTNG_TRACEPOINT_EVENT_MAP(name, map, proto, args, fields) + +#undef LTTNG_TRACEPOINT_EVENT_MAP_NOARGS +#define LTTNG_TRACEPOINT_EVENT_MAP_NOARGS(name, map, fields) + +#undef LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP +#define LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(template, name, map, proto, args) + +#undef LTTNG_TRACEPOINT_EVENT +#define LTTNG_TRACEPOINT_EVENT(name, proto, args, fields) + +#undef LTTNG_TRACEPOINT_EVENT_CODE +#define LTTNG_TRACEPOINT_EVENT_CODE(name, proto, args, _locvar, _code_pre, fields, _code_post) + +#undef LTTNG_TRACEPOINT_EVENT_CODE_MAP +#define LTTNG_TRACEPOINT_EVENT_CODE_MAP(name, map, proto, args, _locvar, _code_pre, fields, _code_post) + +#undef LTTNG_TRACEPOINT_EVENT_INSTANCE +#define LTTNG_TRACEPOINT_EVENT_INSTANCE(template, name, proto, args) + +#undef LTTNG_TRACEPOINT_EVENT_INSTANCE_NOARGS +#define LTTNG_TRACEPOINT_EVENT_INSTANCE_NOARGS(template, name) + +#undef LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP_NOARGS +#define LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP_NOARGS(template, name, map) + +#undef TRACE_INCLUDE +#undef __TRACE_INCLUDE + +#ifndef TRACE_INCLUDE_FILE +# define TRACE_INCLUDE_FILE TRACE_SYSTEM +# define UNDEF_TRACE_INCLUDE_FILE +#endif + +#ifndef TRACE_INCLUDE_PATH +# define __TRACE_INCLUDE(system) +# define UNDEF_TRACE_INCLUDE_PATH +#else +# define __TRACE_INCLUDE(system) __stringify(TRACE_INCLUDE_PATH/system.h) +#endif + +# define TRACE_INCLUDE(system) __TRACE_INCLUDE(system) + +/* Let the trace headers be reread */ +#define TRACE_HEADER_MULTI_READ + +#include TRACE_INCLUDE(TRACE_INCLUDE_FILE) + +/* Make all open coded DECLARE_TRACE nops */ +#undef DECLARE_TRACE +#define DECLARE_TRACE(name, proto, args) + +#ifdef LTTNG_PACKAGE_BUILD +#include +#endif + +#undef LTTNG_TRACEPOINT_EVENT +#undef LTTNG_TRACEPOINT_EVENT_INSTANCE +#undef LTTNG_TRACEPOINT_EVENT_MAP +#undef LTTNG_TRACEPOINT_EVENT_CLASS +#undef LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP +#undef LTTNG_TRACEPOINT_EVENT_CODE_MAP +#undef LTTNG_TRACEPOINT_EVENT_CODE +#undef LTTNG_TRACEPOINT_EVENT_MAP_NOARGS +#undef LTTNG_TRACEPOINT_EVENT_INSTANCE_NOARGS +#undef LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP_NOARGS +#undef TRACE_HEADER_MULTI_READ + +/* Only undef what we defined in this file */ +#ifdef UNDEF_TRACE_INCLUDE_FILE +# undef TRACE_INCLUDE_FILE +# undef UNDEF_TRACE_INCLUDE_FILE +#endif + +#ifdef UNDEF_TRACE_INCLUDE_PATH +# undef TRACE_INCLUDE_PATH +# undef UNDEF_TRACE_INCLUDE_PATH +#endif + +/* + * We want to re-include lttng-tracepoint-event.h for a following probe. + */ +#undef LTTNG_TRACEPOINT_EVENT_H + +/* We may be processing more files */ +#define CREATE_TRACE_POINTS + +#endif /* CREATE_TRACE_POINTS */