/* CTF 1.8 */ 
typealias integer { size = 8; align = 8; signed = false; } := uint8_t;
typealias integer { size = 16; align = 8; signed = false; } := uint16_t;
typealias integer { size = 32; align = 8; signed = false; } := uint32_t;
typealias integer { size = 64; align = 8; signed = false; } := uint64_t;
typealias integer { size = 32; align = 8; signed = false; } := unsigned long;
typealias integer { size = 5; align = 1; signed = false; } := uint5_t;
typealias integer { size = 27; align = 1; signed = false; } := uint27_t;

trace {
   major = 1;
   minor = 8;
   uuid = "11111111-1111-1111-1111-111111111111";
   byte_order = le;
   packet.header := struct {
       uint32_t magic;
       uint8_t  uuid[16];
       uint32_t stream_id;
   };
};

env {
   hostname = "synthetic-host";
   domain = "kernel";
   sysname = "FakeLinux";
   kernel_release = "1.0";
   kernel_version = "Fake Os Synthetic Trace";
   tracer_name = "lttng-modules";
   tracer_major = 2;
   tracer_minor = 1;
   tracer_patchlevel = 0;
};

clock {
   name = monotonic;
   uuid = "bbff68f0-c633-4ea1-92cd-bd11024ec4de";
   description = "Monotonic Clock";
   freq = 1000000000; /* Frequency, in Hz */
   /* clock value offset from Epoch is: offset * (1/freq) */
   offset = 1368000272650993664;
};

typealias integer {
   size = 27; align = 1; signed = false;
   map = clock.monotonic.value;
} := uint27_clock_monotonic_t;

typealias integer {
   size = 32; align = 8; signed = false;
   map = clock.monotonic.value;
} := uint32_clock_monotonic_t;

typealias integer {
   size = 64; align = 8; signed = false;
   map = clock.monotonic.value;
} := uint64_clock_monotonic_t;

struct packet_context {
   uint64_clock_monotonic_t timestamp_begin;
   uint64_clock_monotonic_t timestamp_end;
   uint64_t content_size;
   uint64_t packet_size;
   unsigned long events_discarded;
   uint32_t cpu_id;
};

struct event_header_compact {
   enum : uint5_t { compact = 0 ... 30, extended = 31 } id;
   variant <id> {
       struct {
           uint27_clock_monotonic_t timestamp;
       } compact;
       struct {
           uint32_t id;
           uint64_clock_monotonic_t timestamp;
       } extended;
   } v;
} align(8);

struct event_header_large {
   enum : uint16_t { compact = 0 ... 65534, extended = 65535 } id;
   variant <id> {
       struct {
           uint32_clock_monotonic_t timestamp;
       } compact;
       struct {
           uint32_t id;
           uint64_clock_monotonic_t timestamp;
       } extended;
   } v;
} align(8);

stream {
   id = 0;
   event.header := struct event_header_compact;
   packet.context := struct packet_context;
};

event {
   name = sched_switch;
   id = 0;
   stream_id = 0;
   fields := struct {
       integer { size = 8; align = 8; signed = 1; encoding = UTF8; base = 10; } _prev_comm[16];
       integer { size = 32; align = 8; signed = 1; encoding = none; base = 10; } _prev_tid;
       integer { size = 32; align = 8; signed = 1; encoding = none; base = 10; } _prev_prio;
       integer { size = 32; align = 8; signed = 1; encoding = none; base = 10; } _prev_state;
       integer { size = 8; align = 8; signed = 1; encoding = UTF8; base = 10; } _next_comm[16];
       integer { size = 32; align = 8; signed = 1; encoding = none; base = 10; } _next_tid;
       integer { size = 32; align = 8; signed = 1; encoding = none; base = 10; } _next_prio;
   };
};

