5 * Marker support header.
7 * Mathieu Desnoyers, August 2007
12 #include <ltt/trace.h>
13 #include <ltt/compiler.h>
14 #include <ltt/ltt-private.h>
18 LTT_TYPE_UNSIGNED_INT
,
24 #define LTT_ATTRIBUTE_COMPACT (1<<0)
25 #define LTT_ATTRIBUTE_NETWORK_BYTE_ORDER (1<<1)
27 /* static ids 0-7 reserved for internal use. */
28 #define MARKER_CORE_IDS 8
29 /* dynamic ids 8-127 reserved for compact events. */
30 #define MARKER_COMPACT_IDS 128
37 long size
; /* size if known statically, else -1 */
38 GArray
*fields
; /* Array of struct marker_field */
39 guint8 int_size
, long_size
, pointer_size
, size_t_size
, alignment
;
40 struct marker_info
*next
; /* Linked list of markers with the same name */
46 unsigned long offset
; /* offset in the event data */
48 unsigned long alignment
;
49 unsigned long attributes
;
54 MARKER_ID_SET_MARKER_ID
= 0, /* Static IDs available (range 0-7) */
55 MARKER_ID_SET_MARKER_FORMAT
,
56 MARKER_ID_HEARTBEAT_32
,
57 MARKER_ID_HEARTBEAT_64
,
58 MARKER_ID_COMPACT
, /* Compact IDs (range: 8-127) */
59 MARKER_ID_DYNAMIC
, /* Dynamic IDs (range: 128-65535) */
62 static inline guint16
marker_get_id_from_info(LttTrace
*trace
,
63 struct marker_info
*info
)
65 return ((unsigned long)info
- (unsigned long)trace
->markers
->data
)
66 / sizeof(struct marker_info
);
69 static inline struct marker_info
*marker_get_info_from_id(LttTrace
*trace
,
72 if (unlikely(trace
->markers
->len
< id
))
74 return &g_array_index(trace
->markers
, struct marker_info
, id
);
78 * Returns the head of the marker info list for that name.
80 static inline struct marker_info
*marker_get_info_from_name(LttTrace
*trace
,
83 return g_hash_table_lookup(trace
->markers_hash
, (gconstpointer
)name
);
86 int marker_format_event(LttTrace
*trace
, GQuark name
, const char *format
);
87 int marker_id_event(LttTrace
*trace
, GQuark name
, guint16 id
,
88 uint8_t int_size
, uint8_t long_size
, uint8_t pointer_size
,
89 uint8_t size_t_size
, uint8_t alignment
);
90 int allocate_marker_data(LttTrace
*trace
);
91 void destroy_marker_data(LttTrace
*trace
);
93 #endif //_LTT_MARKERS_H