+++ /dev/null
-/* CTF 1.8 */
-trace {
- major = 0;
- minor = 1;
- uuid = "f816d884-6cea-11e0-ac7a-8f5f4e9f7724";
- byte_order = be; /* Assuming big endian streams */
-};
-
-/* Architecture with 32-bit pointers, 32-bit integers, 32-bit longs */
-
-typealias integer { size = 32; align = 32; signed = false; } := uint32_t;
-typealias integer { size = 64; align = 64; signed = false; } := uint64_t;
-typealias integer { size = 32; align = 32; signed = false; } := void *;
-
-stream {
- event.header := struct {
- uint32_t id;
- uint64_t timestamp;
- };
- event.context := struct { /*
- uint32_t thread_id; * This context belongs to all
- void *func_called; * events in this stream.
- void *called_from; */
- uint32_t event_count; /* for debug */
- };
-};
-
-/*
- * All events have empty context/fields, because their field layout is
- * replicated for all events of the stream (in this particular trace
- * layout). See ctf-embedded-2.txt for a more compact layout.
- */
-
-event { name = invalid; id = 0; };
-event { name = func_enter; id = 1; };
-event { name = func_exit; id = 2; };
-
-event {
- name = timer_tick; /* or sync_point... */
- id = 3;
- fields := {
- uint64_t monotonic_value;
- uint64_t tsc_value;
- uint32_t seqnum;
- };
-};
-
-event {
- name = freq_change;
- id = 4;
- fields := {
- uint64_t new_freq;
- };
-}
-
-clock {
- name = monotonic;
- uuid = ;
-};
-
-clock {
- name = seqnum;
- uuid = ;
-};
-
-clock {
- name = tsc;
- sync_points = {
- map {
- parent.clock = monotonic;
- parent.value = event.timer_tick.monotonic_value;
- value = event.timer_tick.tsc_value;
- };
- map {
- parent.clock = seqnum;
- parent.value = event.timer_tick.seqnum;
- value = event.timer_tick.tsc_value;
- };
- };
-
- freq = {
- update = event.freq_change.new_freq;
- };
- uuid = ;
-};