X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=probes%2Flttng-types.h;h=93760667697919f4f76ffd8663ef5617ea630e9e;hb=b3c40230ad700b12c39640d8593aece428a2702b;hp=0192bffaf2f321f446f71a13901e2ab09fd69663;hpb=d0dd2ecbe2f2e614e0469addd1bd962db3cf047b;p=lttng-modules.git diff --git a/probes/lttng-types.h b/probes/lttng-types.h index 0192bffa..93760667 100644 --- a/probes/lttng-types.h +++ b/probes/lttng-types.h @@ -5,89 +5,36 @@ #ifndef _LTTNG_PROBES_LTTNG_TYPES_H #define _LTTNG_PROBES_LTTNG_TYPES_H +/* + * probes/lttng-types.h + * + * LTTng types. + * + * Copyright (C) 2010-2012 Mathieu Desnoyers + * + * 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 + */ + #include -#include - -#ifdef __KERNEL__ -# include -# ifdef __BIG_ENDIAN -# define __BYTE_ORDER __BIG_ENDIAN -# elif defined(__LITTLE_ENDIAN) -# define __BYTE_ORDER __LITTLE_ENDIAN -# else -# error "unknown endianness" -# endif -#ifndef __BIG_ENDIAN -# define __BIG_ENDIAN 4321 -#endif -#ifndef __LITTLE_ENDIAN -# define __LITTLE_ENDIAN 1234 -#endif -#else -# include -#endif - -/* Update the astract_types name table in lttng-types.c along with this enum */ -enum abstract_types { - atype_integer, - atype_enum, - atype_array, - atype_sequence, - atype_string, - NR_ABSTRACT_TYPES, -}; - -/* Update the string_encodings name table in lttng-types.c along with this enum */ -enum lttng_string_encodings { - lttng_encode_UTF8 = 0, - lttng_encode_ASCII = 1, - NR_STRING_ENCODINGS, -}; - -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; - unsigned int reverse_byte_order:1; - } integer; - struct { - const char *parent_type; - const struct lttng_enum def; - } enumeration; - struct { - const char *elem_type; - unsigned int length; /* num. elems. */ - } array; - struct { - const char *elem_type; - const char *length_type; - } sequence; - struct { - enum lttng_string_encodings encoding; - } string; - } u; -} __attribute__((packed)); - -void lttng_print_event_type(struct seq_file *m, unsigned int indent, - const struct lttng_type *type); +#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_ENUMS @@ -117,58 +64,15 @@ void lttng_print_event_type(struct seq_file *m, unsigned int indent, #ifdef STAGE_EXPORT_TYPES -#undef TRACE_EVENT_TYPE___integer_ext -#define TRACE_EVENT_TYPE___integer_ext(_name, _byte_order) \ - { \ - .atype = atype_integer, \ - .name = #_name, \ - .u.integer.size = sizeof(_name) * 8, \ - .u.integer.alignment = __alignof__(_name) * 8,\ - .u.integer.signedness = is_signed_type(_name),\ - .u.integer.reverse_byte_order = ((_byte_order) != __BYTE_ORDER),\ - }, - -#undef TRACE_EVENT_TYPE___integer -#define TRACE_EVENT_TYPE___integer(_name, _unused) \ - TRACE_EVENT_TYPE___integer_ext(_name, __BYTE_ORDER) - #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), \ +#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), \ }, -#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, \ - }, - -#undef TRACE_EVENT_TYPE___sequence -#define TRACE_EVENT_TYPE___sequence(_name, _elem_type, _length_type) \ - { \ - .atype = atype_sequence, \ - .name = #_name, \ - .u.sequence.elem_type = #_elem_type, \ - .u.sequence.length_type = #_length_type, \ - }, - -#undef TRACE_EVENT_TYPE___string -#define TRACE_EVENT_TYPE___string(_name, _encoding) \ - { \ - .atype = atype_string, \ - .name = #_name, \ - .u.string.encoding = lttng_encode_##_encoding,\ - }, - - /* Local declaration */ #undef TRACE_EVENT_TYPE #define TRACE_EVENT_TYPE(_name, _abstract_type, args...) \