-
Notifications
You must be signed in to change notification settings - Fork 189
/
tcprtt_bpfel_x86.go
131 lines (111 loc) · 2.8 KB
/
tcprtt_bpfel_x86.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
// Code generated by bpf2go; DO NOT EDIT.
//go:build 386 || amd64
package tracer
import (
"bytes"
_ "embed"
"fmt"
"io"
"github.com/cilium/ebpf"
)
type tcpRTTHist struct {
Latency uint64
Cnt uint64
Slots [27]uint32
_ [4]byte
}
type tcpRTTHistKey struct {
Family uint16
Addr [16]uint8
}
// loadTcpRTT returns the embedded CollectionSpec for tcpRTT.
func loadTcpRTT() (*ebpf.CollectionSpec, error) {
reader := bytes.NewReader(_TcpRTTBytes)
spec, err := ebpf.LoadCollectionSpecFromReader(reader)
if err != nil {
return nil, fmt.Errorf("can't load tcpRTT: %w", err)
}
return spec, err
}
// loadTcpRTTObjects loads tcpRTT and converts it into a struct.
//
// The following types are suitable as obj argument:
//
// *tcpRTTObjects
// *tcpRTTPrograms
// *tcpRTTMaps
//
// See ebpf.CollectionSpec.LoadAndAssign documentation for details.
func loadTcpRTTObjects(obj interface{}, opts *ebpf.CollectionOptions) error {
spec, err := loadTcpRTT()
if err != nil {
return err
}
return spec.LoadAndAssign(obj, opts)
}
// tcpRTTSpecs contains maps and programs before they are loaded into the kernel.
//
// It can be passed ebpf.CollectionSpec.Assign.
type tcpRTTSpecs struct {
tcpRTTProgramSpecs
tcpRTTMapSpecs
}
// tcpRTTSpecs contains programs before they are loaded into the kernel.
//
// It can be passed ebpf.CollectionSpec.Assign.
type tcpRTTProgramSpecs struct {
IgTcprcvestKp *ebpf.ProgramSpec `ebpf:"ig_tcprcvest_kp"`
}
// tcpRTTMapSpecs contains maps before they are loaded into the kernel.
//
// It can be passed ebpf.CollectionSpec.Assign.
type tcpRTTMapSpecs struct {
Hists *ebpf.MapSpec `ebpf:"hists"`
}
// tcpRTTObjects contains all objects after they have been loaded into the kernel.
//
// It can be passed to loadTcpRTTObjects or ebpf.CollectionSpec.LoadAndAssign.
type tcpRTTObjects struct {
tcpRTTPrograms
tcpRTTMaps
}
func (o *tcpRTTObjects) Close() error {
return _TcpRTTClose(
&o.tcpRTTPrograms,
&o.tcpRTTMaps,
)
}
// tcpRTTMaps contains all maps after they have been loaded into the kernel.
//
// It can be passed to loadTcpRTTObjects or ebpf.CollectionSpec.LoadAndAssign.
type tcpRTTMaps struct {
Hists *ebpf.Map `ebpf:"hists"`
}
func (m *tcpRTTMaps) Close() error {
return _TcpRTTClose(
m.Hists,
)
}
// tcpRTTPrograms contains all programs after they have been loaded into the kernel.
//
// It can be passed to loadTcpRTTObjects or ebpf.CollectionSpec.LoadAndAssign.
type tcpRTTPrograms struct {
IgTcprcvestKp *ebpf.Program `ebpf:"ig_tcprcvest_kp"`
}
func (p *tcpRTTPrograms) Close() error {
return _TcpRTTClose(
p.IgTcprcvestKp,
)
}
func _TcpRTTClose(closers ...io.Closer) error {
for _, closer := range closers {
if err := closer.Close(); err != nil {
return err
}
}
return nil
}
// Do not access this directly.
//
//go:embed tcprtt_bpfel_x86.o
var _TcpRTTBytes []byte