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.
13package format
14
15type Data struct {
16	Events   []*Event         `json:"traceEvents"`
17	Frames   map[string]Frame `json:"stackFrames"`
18	TimeUnit string           `json:"displayTimeUnit"`
19}
20
21type Event struct {
22	Name      string  `json:"name,omitempty"`
23	Phase     string  `json:"ph"`
24	Scope     string  `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 string  `json:"bp,omitempty"`
31	Stack     int     `json:"sf,omitempty"`
32	EndStack  int     `json:"esf,omitempty"`
33	Arg       any     `json:"args,omitempty"`
34	Cname     string  `json:"cname,omitempty"`
35	Category  string  `json:"cat,omitempty"`
36}
37
38type Frame struct {
39	Name   string `json:"name"`
40	Parent int    `json:"parent,omitempty"`
41}
42
43type NameArg struct {
44	Name string `json:"name"`
45}
46
47type BlockedArg struct {
48	Blocked string `json:"blocked"`
49}
50
51type SortIndexArg struct {
52	Index int `json:"sort_index"`
53}
54
55type HeapCountersArg struct {
56	Allocated uint64
57	NextGC    uint64
58}
59
60const (
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
66type GoroutineCountersArg struct {
67	Running   uint64
68	Runnable  uint64
69	GCWaiting uint64
70}
71
72type ThreadCountersArg struct {
73	Running   int64
74	InSyscall int64
75}
76
77type ThreadIDArg struct {
78	ThreadID uint64
79}
80