#include <babeltrace/ctf/types.h>
#include <sys/types.h>
#include <dirent.h>
-#include <uuid/uuid.h>
+#include <babeltrace/uuid.h>
#include <assert.h>
#include <glib.h>
struct ctf_stream_class;
struct ctf_stream;
struct ctf_event;
+struct ctf_stream;
+struct ctf_clock;
struct ctf_stream {
struct ctf_stream_class *stream_class;
uint64_t event_id; /* Current event ID */
int has_timestamp;
uint64_t stream_id;
+ int consumed; /* Last packet used by caller */
struct definition_struct *trace_packet_header;
struct definition_struct *stream_packet_context;
GPtrArray *events_by_id; /* Array of struct ctf_stream_event pointers indexed by id */
struct definition_scope *parent_def_scope; /* for initialization */
int stream_definitions_created;
+
+ struct ctf_clock *current_clock;
+
+ /* Event discarded information */
+ uint32_t events_discarded;
+ uint64_t prev_timestamp; /* Last event */
+ uint64_t prev_timestamp_end; /* End-of-packet timestamp */
};
struct ctf_stream_event {
uint64_t offset_s;
/* Fine clock offset from Epoch, in (1/freq) units. */
uint64_t offset;
+ int absolute;
enum { /* Fields populated mask */
CTF_CLOCK_name = (1U << 0),
+ CTF_CLOCK_freq = (1U << 1),
} field_mask;
};
(ctf_trace)->(field); \
})
+#define TRACER_ENV_LEN 128
+
+/* tracer-specific environment */
+struct ctf_tracer_env {
+ int vpid; /* negative if unset */
+
+ /* All strings below: "" if unset. */
+ char procname[TRACER_ENV_LEN];
+ char domain[TRACER_ENV_LEN];
+ char sysname[TRACER_ENV_LEN];
+ char release[TRACER_ENV_LEN];
+ char version[TRACER_ENV_LEN];
+};
+
struct ctf_trace {
struct trace_descriptor parent;
/* root scope */
GPtrArray *streams; /* Array of struct ctf_stream_class pointers */
struct ctf_stream *metadata;
GHashTable *clocks;
+ struct ctf_clock *single_clock; /* currently supports only one clock */
+ struct trace_collection *collection; /* Container of this trace */
struct declaration_struct *packet_header_decl;
uint64_t major;
uint64_t minor;
- uuid_t uuid;
+ unsigned char * uuid;
int byte_order; /* trace BYTE_ORDER. 0 if unset. */
+ struct ctf_tracer_env env;
enum { /* Fields populated mask */
CTF_TRACE_major = (1U << 0),
/* Heap of streams, ordered to always get the lowest timestam */
struct ptr_heap *stream_heap;
- char collection_path[PATH_MAX];
char path[PATH_MAX];
- char domain[PATH_MAX];
- char procname[PATH_MAX];
- char vpid[PATH_MAX];
};
#define CTF_STREAM_SET_FIELD(ctf_stream, field) \
GQuark name;
uint64_t id; /* Numeric identifier within the stream */
uint64_t stream_id;
- GQuark loglevel_identifier;
- int64_t loglevel_value;
+ int loglevel;
enum { /* Fields populated mask */
CTF_EVENT_name = (1 << 0),
CTF_EVENT_id = (1 << 1),
CTF_EVENT_stream_id = (1 << 2),
- CTF_EVENT_loglevel_identifier = (1 << 3),
- CTF_EVENT_loglevel_value = (1 << 4),
+ CTF_EVENT_loglevel = (1 << 4),
} field_mask;
};