X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=include%2Flttng%2Ftracepoint-types.h;h=42fe948657613d61c7df9db596abb023662287ad;hb=9b14815a9ee98c0dbc842a1e545cd6a82ae7b18a;hp=5f3870868d80e847d77b19c15661c9d3089c981a;hpb=51489cadd9c38c10261bdbab9b5e72803c95a732;p=lttng-ust.git diff --git a/include/lttng/tracepoint-types.h b/include/lttng/tracepoint-types.h index 5f387086..42fe9486 100644 --- a/include/lttng/tracepoint-types.h +++ b/include/lttng/tracepoint-types.h @@ -1,45 +1,51 @@ -#ifndef _LTTNG_TRACEPOINT_TYPES_H -#define _LTTNG_TRACEPOINT_TYPES_H - /* - * Copyright (C) 2008-2011 Mathieu Desnoyers - * Copyright (C) 2009 Pierre-Marc Fournier - * Copyright (C) 2009 Steven Rostedt + * SPDX-License-Identifier: MIT * - * 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. + * Copyright (C) 2011-2012 Mathieu Desnoyers + */ + +#ifndef _LTTNG_UST_TRACEPOINT_TYPES_H +#define _LTTNG_UST_TRACEPOINT_TYPES_H + +#include + +/* + * Tracepoint probe definition * - * 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. + * IMPORTANT: this structure is part of the ABI between instrumented + * applications and UST. This structure is fixed-size because it is part + * of a public array of structures. Rather than extending this + * structure, struct lttng_ust_tracepoint should be extended instead. + */ + +struct lttng_ust_tracepoint_probe { + void (*func)(void); + void *data; +}; + +/* + * Tracepoint definition * - * 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 + * IMPORTANT: this structure is part of the ABI between instrumented + * applications and UST. Fields need to be only added at the end, never + * reordered, never removed. * - * Heavily inspired from the Linux Kernel Markers. + * The field @struct_size should be used to determine the size of the + * structure. It should be queried before using additional fields added + * at the end of the structure. */ -#ifdef __cplusplus -extern "C" { -#endif +struct lttng_ust_tracepoint { + uint32_t struct_size; -struct tracepoint_probe { - void *func; - void *data; -}; + const char *provider_name; + const char *event_name; + int state; + struct lttng_ust_tracepoint_probe *probes; + int *tracepoint_provider_ref; + const char *signature; -struct tracepoint { - const char *name; /* Tracepoint name */ - char state; /* State. */ - struct tracepoint_probe *probes; + /* End of base ABI. Fields below should be used after checking struct_size. */ }; -#ifdef __cplusplus -} -#endif - -#endif /* _LTTNG_TRACEPOINT_TYPES_H */ +#endif /* _LTTNG_UST_TRACEPOINT_TYPES_H */