#ifndef _LTTNG_PROBES_LTTNG_TYPES_H
#define _LTTNG_PROBES_LTTNG_TYPES_H
-#include <lttng.h>
-
-enum abstract_types {
- atype_integer,
- atype_enum,
- atype_array,
- NR_ABSTRACT_TYPES,
-};
-
-struct lttng_enum_entry {
- unsigned long long start, end; /* start and end are inclusive */
- const char *string;
-};
-
-struct lttng_enum {
- const struct lttng_enum_entry *entries;
- unsigned int len;
-};
-
-struct lttng_type {
- enum abstract_types atype;
- const char *name;
- union {
- struct {
- unsigned int size; /* in bits */
- unsigned short alignment; /* in bits */
- unsigned int signedness:1;
- } integer;
- struct {
- const char *parent_type;
- const struct lttng_enum def;
- } enumeration;
- struct {
- const char *elem_type;
- unsigned int length; /* num. elems. */
- } array;
- } u;
-} __attribute__((packed));
+/*
+ * probes/lttng-types.h
+ *
+ * LTTng types.
+ *
+ * Copyright (C) 2010-2012 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; only
+ * 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
+ */
-#endif /* _LTTNG_PROBES_LTTNG_TYPES_H */
+#include <linux/seq_file.h>
+#include "lttng.h"
+#include "../lttng-events.h"
+#include "../lttng-tracer.h"
+#include "../lttng-endian.h"
+#endif /* _LTTNG_PROBES_LTTNG_TYPES_H */
/* Export enumerations */
#ifdef STAGE_EXPORT_TYPES
-#undef TRACE_EVENT_TYPE___integer
-#define TRACE_EVENT_TYPE___integer(_name, _unused) \
- { \
- .atype = atype_integer, \
- .name = #_name, \
- .u.integer.size = sizeof(_name) * 8, \
- .u.integer.alignment = __alignof__(_name) * 8,\
- .u.integer.signedness = is_signed_type(_name),\
- },
-
#undef TRACE_EVENT_TYPE___enum
-#define TRACE_EVENT_TYPE___enum(_name, _parent_type) \
- { \
- .atype = atype_enum, \
- .name = #_name, \
- .u.enumeration.parent_type = #_parent_type, \
- .u.enumeration.def.entries = __trace_event_enum_##_name, \
- .u.enumeration.def.len = ARRAY_SIZE(__trace_event_enum_##_name), \
- },
-
-#undef TRACE_EVENT_TYPE___array
-#define TRACE_EVENT_TYPE___array(_name, _elem_type, _length) \
- { \
- .atype = atype_array, \
- .name = #_name, \
- .u.array.elem_type = #_elem_type, \
- .u.array.length = _length, \
+#define TRACE_EVENT_TYPE___enum(_name, _container_type) \
+ { \
+ .name = #_name, \
+ .container_type = __type_integer(_container_type, __BYTE_ORDER, 10, none), \
+ .entries = __trace_event_enum_##_name, \
+ .len = ARRAY_SIZE(__trace_event_enum_##_name), \
},
/* Local declaration */