mirror of
				https://github.com/go-delve/delve.git
				synced 2025-10-31 18:57:18 +08:00 
			
		
		
		
	* Remove standard C headers since we have vmlinux.h already * Simplify get_goroutine_id() implementation, this reduces a map and thus reduces runtime memory comsumption. While at it, unify all indention using 4 spaces. Signed-off-by: Hengqi Chen <hengqi.chen@gmail.com>
		
			
				
	
	
		
			124 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Code generated by bpf2go; DO NOT EDIT.
 | |
| //go:build (386 || amd64) && go1.16
 | |
| // +build 386 amd64
 | |
| // +build go1.16
 | |
| 
 | |
| package ebpf
 | |
| 
 | |
| import (
 | |
| 	"bytes"
 | |
| 	_ "embed"
 | |
| 	"fmt"
 | |
| 	"io"
 | |
| 
 | |
| 	"github.com/cilium/ebpf"
 | |
| )
 | |
| 
 | |
| // loadTrace returns the embedded CollectionSpec for trace.
 | |
| func loadTrace() (*ebpf.CollectionSpec, error) {
 | |
| 	reader := bytes.NewReader(_TraceBytes)
 | |
| 	spec, err := ebpf.LoadCollectionSpecFromReader(reader)
 | |
| 	if err != nil {
 | |
| 		return nil, fmt.Errorf("can't load trace: %w", err)
 | |
| 	}
 | |
| 
 | |
| 	return spec, err
 | |
| }
 | |
| 
 | |
| // loadTraceObjects loads trace and converts it into a struct.
 | |
| //
 | |
| // The following types are suitable as obj argument:
 | |
| //
 | |
| //     *traceObjects
 | |
| //     *tracePrograms
 | |
| //     *traceMaps
 | |
| //
 | |
| // See ebpf.CollectionSpec.LoadAndAssign documentation for details.
 | |
| func loadTraceObjects(obj interface{}, opts *ebpf.CollectionOptions) error {
 | |
| 	spec, err := loadTrace()
 | |
| 	if err != nil {
 | |
| 		return err
 | |
| 	}
 | |
| 
 | |
| 	return spec.LoadAndAssign(obj, opts)
 | |
| }
 | |
| 
 | |
| // traceSpecs contains maps and programs before they are loaded into the kernel.
 | |
| //
 | |
| // It can be passed ebpf.CollectionSpec.Assign.
 | |
| type traceSpecs struct {
 | |
| 	traceProgramSpecs
 | |
| 	traceMapSpecs
 | |
| }
 | |
| 
 | |
| // traceSpecs contains programs before they are loaded into the kernel.
 | |
| //
 | |
| // It can be passed ebpf.CollectionSpec.Assign.
 | |
| type traceProgramSpecs struct {
 | |
| 	UprobeDlvTrace *ebpf.ProgramSpec `ebpf:"uprobe__dlv_trace"`
 | |
| }
 | |
| 
 | |
| // traceMapSpecs contains maps before they are loaded into the kernel.
 | |
| //
 | |
| // It can be passed ebpf.CollectionSpec.Assign.
 | |
| type traceMapSpecs struct {
 | |
| 	ArgMap *ebpf.MapSpec `ebpf:"arg_map"`
 | |
| 	Events *ebpf.MapSpec `ebpf:"events"`
 | |
| }
 | |
| 
 | |
| // traceObjects contains all objects after they have been loaded into the kernel.
 | |
| //
 | |
| // It can be passed to loadTraceObjects or ebpf.CollectionSpec.LoadAndAssign.
 | |
| type traceObjects struct {
 | |
| 	tracePrograms
 | |
| 	traceMaps
 | |
| }
 | |
| 
 | |
| func (o *traceObjects) Close() error {
 | |
| 	return _TraceClose(
 | |
| 		&o.tracePrograms,
 | |
| 		&o.traceMaps,
 | |
| 	)
 | |
| }
 | |
| 
 | |
| // traceMaps contains all maps after they have been loaded into the kernel.
 | |
| //
 | |
| // It can be passed to loadTraceObjects or ebpf.CollectionSpec.LoadAndAssign.
 | |
| type traceMaps struct {
 | |
| 	ArgMap *ebpf.Map `ebpf:"arg_map"`
 | |
| 	Events *ebpf.Map `ebpf:"events"`
 | |
| }
 | |
| 
 | |
| func (m *traceMaps) Close() error {
 | |
| 	return _TraceClose(
 | |
| 		m.ArgMap,
 | |
| 		m.Events,
 | |
| 	)
 | |
| }
 | |
| 
 | |
| // tracePrograms contains all programs after they have been loaded into the kernel.
 | |
| //
 | |
| // It can be passed to loadTraceObjects or ebpf.CollectionSpec.LoadAndAssign.
 | |
| type tracePrograms struct {
 | |
| 	UprobeDlvTrace *ebpf.Program `ebpf:"uprobe__dlv_trace"`
 | |
| }
 | |
| 
 | |
| func (p *tracePrograms) Close() error {
 | |
| 	return _TraceClose(
 | |
| 		p.UprobeDlvTrace,
 | |
| 	)
 | |
| }
 | |
| 
 | |
| func _TraceClose(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 trace_bpfel_x86.o
 | |
| var _TraceBytes []byte
 |