-#undef DECLARE_EVENT_CLASS
-#define DECLARE_EVENT_CLASS(_name, _proto, _args, _tstruct, _assign, _print) \
-static inline size_t __event_get_size__##_name(size_t *__dynamic_len, _proto) \
+#undef TP_locvar
+#define TP_locvar(...) __VA_ARGS__
+
+#undef LTTNG_DECLARE_EVENT_CLASS
+#define LTTNG_DECLARE_EVENT_CLASS(_name, _proto, _args, _locvar, _code, _tstruct, _assign, _print) \
+static inline size_t __event_get_size__##_name(size_t *__dynamic_len, \
+ void *__tp_locvar, _proto) \
+{ \
+ size_t __event_len = 0; \
+ unsigned int __dynamic_len_idx __attribute__((unused)) = 0; \
+ struct { _locvar } *tp_locvar __attribute__((unused)) = __tp_locvar; \
+ \
+ _tstruct \
+ return __event_len; \
+}
+
+#undef LTTNG_DECLARE_EVENT_CLASS_NOARGS
+#define LTTNG_DECLARE_EVENT_CLASS_NOARGS(_name, _locvar, _code, _tstruct, _assign, _print) \
+static inline size_t __event_get_size__##_name(size_t *__dynamic_len, \
+ void *__tp_locvar) \