1 // Copyright 2016 The Fuchsia Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef KTRACE_DEF
6 #error must define KTRACE_DEF
7 #endif
8 
9 // events before 0x100 may require specialized handling
10 
11 KTRACE_DEF(0x000,32B,VERSION,META) // version
12 KTRACE_DEF(0x001,32B,TICKS_PER_MS,META) // lo32, hi32
13 
14 KTRACE_DEF(0x020,NAME,KTHREAD_NAME,META) // ktid, 0, name[]
15 KTRACE_DEF(0x021,NAME,THREAD_NAME,META) // tid, pid, name[]
16 KTRACE_DEF(0x022,NAME,PROC_NAME,META) // pid, 0, name[]
17 KTRACE_DEF(0x023,NAME,SYSCALL_NAME,META) // num, 0, name[]
18 KTRACE_DEF(0x024,NAME,IRQ_NAME,META) // num, 0, name[]
19 KTRACE_DEF(0x025,NAME,PROBE_NAME,META) // num, 0, name[]
20 KTRACE_DEF(0x026,NAME,VCPU_META,META) // meta, 0, name[]
21 KTRACE_DEF(0x027,NAME,VCPU_EXIT_META,META) // meta, 0, name[]
22 
23 KTRACE_DEF(0x030,16B,IRQ_ENTER,IRQ) // (irqn << 8) | cpu
24 KTRACE_DEF(0x031,16B,IRQ_EXIT,IRQ) // (irqn << 8) | cpu
25 KTRACE_DEF(0x032,16B,SYSCALL_ENTER,IRQ) // (n << 8) | cpu
26 KTRACE_DEF(0x033,16B,SYSCALL_EXIT,IRQ) // (n << 8) | cpu
27 
28 KTRACE_DEF(0x034,32B,PAGE_FAULT,IRQ) // virtual_address_hi, virtual_address_lo, flags, cpu
29 KTRACE_DEF(0x035,32B,PAGE_FAULT_EXIT,IRQ) // virtual_address_hi, virtual_address_lo, flags, cpu
30 
31 // to-tid, (new_thread_prioriy<<24) | (old_thread_priority<<16) | (old_thread_state<<8) | cpu), from-kt, to-kt
32 KTRACE_DEF(0x040,32B,CONTEXT_SWITCH,SCHEDULER)
33 
34 // events from 0x100 on all share the tag/tid/ts common header
35 
36 KTRACE_DEF(0x100,32B,OBJECT_DELETE,LIFECYCLE) // id
37 
38 KTRACE_DEF(0x110,32B,THREAD_CREATE,TASKS) // tid, pid
39 KTRACE_DEF(0x111,32B,THREAD_START,TASKS) // tid
40 KTRACE_DEF(0x112,32B,THREAD_EXIT,TASKS)
41 
42 KTRACE_DEF(0x120,32B,PROC_CREATE,TASKS) // pid
43 KTRACE_DEF(0x121,32B,PROC_START,TASKS) // tid, pid
44 KTRACE_DEF(0x122,32B,PROC_EXIT,TASKS) // pid
45 
46 KTRACE_DEF(0x130,32B,CHANNEL_CREATE,IPC) // id0, id1, flags
47 KTRACE_DEF(0x131,32B,CHANNEL_WRITE,IPC) // id0, bytes, handles
48 KTRACE_DEF(0x132,32B,CHANNEL_READ,IPC) // id1, bytes, handles
49 
50 KTRACE_DEF(0x140,32B,PORT_WAIT,IPC) // id
51 KTRACE_DEF(0x141,32B,PORT_WAIT_DONE,IPC) // id, status
52 KTRACE_DEF(0x142,32B,PORT_CREATE,IPC) // id
53 KTRACE_DEF(0x143,32B,PORT_QUEUE,IPC) // id, size
54 
55 KTRACE_DEF(0x150,32B,WAIT_ONE,IPC) // id, signals, timeoutlo, timeouthi
56 KTRACE_DEF(0x151,32B,WAIT_ONE_DONE,IPC) // id, status, pending
57 
58 KTRACE_DEF(0x160,32B,KWAIT_BLOCK,SCHEDULER) // queue_hi, queue_hi
59 KTRACE_DEF(0x161,32B,KWAIT_WAKE,SCHEDULER) // queue_hi, queue_hi, is_mutex
60 KTRACE_DEF(0x162,32B,KWAIT_UNBLOCK,SCHEDULER) // queue_hi, queue_hi, blocked_status
61 
62 KTRACE_DEF(0x170,32B,VCPU_ENTER,TASKS)
63 KTRACE_DEF(0x171,32B,VCPU_EXIT,TASKS) // meta, exit_address_hi, exit_address_lo
64 KTRACE_DEF(0x172,32B,VCPU_BLOCK,TASKS) // meta
65 KTRACE_DEF(0x173,32B,VCPU_UNBLOCK,TASKS) // meta
66 
67 // events from 0x200-0x2ff are for arch-specific needs
68 
69 #ifdef __x86_64__
70 // These are used by Intel Processor Trace support.
71 KTRACE_DEF(0x200,32B,IPT_START,ARCH) // MSR_PLATFORM_INFO[15:8], kernel cr3
72 KTRACE_DEF(0x201,32B,IPT_CPU_INFO,ARCH) // family, model, stepping
73 KTRACE_DEF(0x202,32B,IPT_STOP,ARCH)
74 KTRACE_DEF(0x203,32B,IPT_PROCESS_CREATE,ARCH) // pid, cr3
75 #endif
76 
77 #undef KTRACE_DEF
78