X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=include%2Flttng%2Ftracepoint-types.h;h=42fe948657613d61c7df9db596abb023662287ad;hb=9b14815a9ee98c0dbc842a1e545cd6a82ae7b18a;hp=77e2e25d1621bce2d4dacf2582a47d0f5e18c7a2;hpb=2e707419baf97942e59a9d13bb23e0392bc48c15;p=lttng-ust.git diff --git a/include/lttng/tracepoint-types.h b/include/lttng/tracepoint-types.h index 77e2e25d..42fe9486 100644 --- a/include/lttng/tracepoint-types.h +++ b/include/lttng/tracepoint-types.h @@ -1,31 +1,51 @@ -#ifndef _LTTNG_TRACEPOINT_TYPES_H -#define _LTTNG_TRACEPOINT_TYPES_H - /* - * Copyright (c) 2011 - Mathieu Desnoyers + * SPDX-License-Identifier: MIT * - * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED - * OR IMPLIED. ANY USE IS AT YOUR OWN RISK. + * Copyright (C) 2011-2012 Mathieu Desnoyers + */ + +#ifndef _LTTNG_UST_TRACEPOINT_TYPES_H +#define _LTTNG_UST_TRACEPOINT_TYPES_H + +#include + +/* + * Tracepoint probe definition * - * 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. + * 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 tracepoint_probe { - void *func; +struct lttng_ust_tracepoint_probe { + void (*func)(void); void *data; }; -#define TRACEPOINT_PADDING 16 -struct tracepoint { - const char *name; +/* + * Tracepoint definition + * + * 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. + * + * 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. + */ + +struct lttng_ust_tracepoint { + uint32_t struct_size; + + const char *provider_name; + const char *event_name; int state; - struct tracepoint_probe *probes; + struct lttng_ust_tracepoint_probe *probes; int *tracepoint_provider_ref; - char padding[TRACEPOINT_PADDING]; + const char *signature; + + /* End of base ABI. Fields below should be used after checking struct_size. */ }; -#endif /* _LTTNG_TRACEPOINT_TYPES_H */ +#endif /* _LTTNG_UST_TRACEPOINT_TYPES_H */