/* CTF 1.8 */
typealias integer { size = 8; align = 8; signed = true; } := int8_t;
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 = 8; align = 8; signed = false; encoding = ASCII; } := ctf_bounded_string_t;
typealias enum : uint32_t {
	MUTEX_INIT = 33,
	MUTEX_UNLOCK = 34,
	MUTEX_LOCK = 35,
	SEMA_INIT = 36,
	SEMA_GIVE = 37,
	SEMA_TAKE = 38,
	SLEEP = 39
} := call_id;

struct event_header {
	uint32_t timestamp;
	uint8_t id;
};

trace {
	major = 1;
	minor = 8;
	byte_order = le;
};

stream {
	event.header := struct event_header;
};

event {
	name = thread_switched_out;
	id = 0x10;
	fields := struct {
		uint32_t thread_id;
		ctf_bounded_string_t name[20];
	};
};

event {
	name = thread_switched_in;
	id = 0x11;
	fields := struct {
		uint32_t thread_id;
		ctf_bounded_string_t name[20];
	};
};

event {
	name = thread_priority_set;
	id = 0x12;
	fields := struct {
		uint32_t thread_id;
		int8_t prio;
		ctf_bounded_string_t name[20];
	};

};

event {
	name = thread_create;
	id = 0x13;
	fields := struct {
		uint32_t thread_id;
		ctf_bounded_string_t name[20];
	};
};

event {
	name = thread_abort;
	id = 0x14;
	fields := struct {
		uint32_t thread_id;
		ctf_bounded_string_t name[20];
	};
};

event {
	name = thread_suspend;
	id = 0x15;
	fields := struct {
		uint32_t thread_id;
		ctf_bounded_string_t name[20];
	};
};

event {
	name = thread_resume;
	id = 0x16;
	fields := struct {
		uint32_t thread_id;
		ctf_bounded_string_t name[20];
	};
};
event {
        name = thread_ready;
        id = 0x17;
        fields := struct {
                uint32_t thread_id;
				ctf_bounded_string_t name[20];
        };
};

event {
	name = thread_pending;
	id = 0x18;
	fields := struct {
		uint32_t thread_id;
		ctf_bounded_string_t name[20];
	};
};

event {
	name = thread_info;
	id = 0x19;
	fields := struct {
		uint32_t thread_id;
		ctf_bounded_string_t name[20];
		uint32_t stack_base;
		uint32_t stack_size;
	};
};

event {
	name = thread_name_set;
	id = 0x1a;
	fields := struct {
		uint32_t thread_id;
		ctf_bounded_string_t name[20];
	};
};

event {
	name = isr_enter;
	id = 0x20;
};

event {
	name = isr_exit;
	id = 0x21;
};

event {
	name = isr_exit_to_scheduler;
	id = 0x22;
};

event {
	name = idle;
	id = 0x30;
};

event {
	name = start_call;
	id = 0x41;
	fields := struct {
		call_id id;
	};
};

event {
	name = end_call;
	id = 0x42;
	fields := struct {
		call_id id;
	};
};

event {
	name = semaphore_init;
	id = 0x43;
	fields := struct {
		uint32_t id;
	};
};

event {
	name = semaphore_take;
	id = 0x45;
	fields := struct {
		uint32_t id;
	};
};

event {
	name = semaphore_give;
	id = 0x44;
	fields := struct {
		uint32_t id;
	};
};

event {
	name = mutex_init;
	id = 0x46;
	fields := struct {
		uint32_t id;
	};
};

event {
	name = mutex_lock;
	id = 0x47;
	fields := struct {
		uint32_t id;
	};
};

event {
	name = mutex_unlock;
	id = 0x48;
	fields := struct {
		uint32_t id;
	};
};
