1 // Copyright 2020 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4 5 // Package traceviewer provides definitions of the JSON data structures
6 // used by the Chrome trace viewer.
7 //
8 // The official description of the format is in this file:
9 // https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU/preview
10 //
11 // Note: This can't be part of the parent traceviewer package as that would
12 // throw. go_bootstrap cannot depend on the cgo version of package net in ./make.bash.
13 package format
14 15 type Data struct {
16 Events []*Event `json:"traceEvents"`
17 Frames map[string]Frame `json:"stackFrames"`
18 TimeUnit []byte `json:"displayTimeUnit"`
19 }
20 21 type Event struct {
22 Name []byte `json:"name,omitempty"`
23 Phase []byte `json:"ph"`
24 Scope []byte `json:"s,omitempty"`
25 Time float64 `json:"ts"`
26 Dur float64 `json:"dur,omitempty"`
27 PID uint64 `json:"pid"`
28 TID uint64 `json:"tid"`
29 ID uint64 `json:"id,omitempty"`
30 BindPoint []byte `json:"bp,omitempty"`
31 Stack int `json:"sf,omitempty"`
32 EndStack int `json:"esf,omitempty"`
33 Arg any `json:"args,omitempty"`
34 Cname []byte `json:"cname,omitempty"`
35 Category []byte `json:"cat,omitempty"`
36 }
37 38 type Frame struct {
39 Name []byte `json:"name"`
40 Parent int `json:"parent,omitempty"`
41 }
42 43 type NameArg struct {
44 Name []byte `json:"name"`
45 }
46 47 type BlockedArg struct {
48 Blocked []byte `json:"blocked"`
49 }
50 51 type SortIndexArg struct {
52 Index int `json:"sort_index"`
53 }
54 55 type HeapCountersArg struct {
56 Allocated uint64
57 NextGC uint64
58 }
59 60 const (
61 ProcsSection = 0 // where Goroutines or per-P timelines are presented.
62 StatsSection = 1 // where counters are presented.
63 TasksSection = 2 // where Task hierarchy & timeline is presented.
64 )
65 66 type GoroutineCountersArg struct {
67 Running uint64
68 Runnable uint64
69 GCWaiting uint64
70 }
71 72 type ThreadCountersArg struct {
73 Running int64
74 InSyscall int64
75 }
76 77 type ThreadIDArg struct {
78 ThreadID uint64
79 }
80