ringbuf

package
v0.12.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 9, 2023 License: MIT Imports: 14 Imported by: 123

Documentation

Overview

Package ringbuf allows interacting with Linux BPF ring buffer.

BPF allows submitting custom events to a BPF ring buffer map set up by userspace. This is very useful to push things like packet samples from BPF to a daemon running in user space.

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrClosed = os.ErrClosed
)

Functions

This section is empty.

Types

type Reader

type Reader struct {
	// contains filtered or unexported fields
}

Reader allows reading bpf_ringbuf_output from user space.

func NewReader

func NewReader(ringbufMap *ebpf.Map) (*Reader, error)

NewReader creates a new BPF ringbuf reader.

func (*Reader) BufferSize added in v0.12.3

func (r *Reader) BufferSize() int

BufferSize returns the size in bytes of the ring buffer

func (*Reader) Close

func (r *Reader) Close() error

Close frees resources used by the reader.

It interrupts calls to Read.

func (*Reader) Read

func (r *Reader) Read() (Record, error)

Read the next record from the BPF ringbuf.

Returns os.ErrClosed if Close is called on the Reader, or os.ErrDeadlineExceeded if a deadline was set and no valid entry was present. A producer might use BPF_RB_NO_WAKEUP which may cause the deadline to expire but a valid entry will be present.

func (*Reader) ReadInto added in v0.9.0

func (r *Reader) ReadInto(rec *Record) error

ReadInto is like Read except that it allows reusing Record and associated buffers.

func (*Reader) SetDeadline added in v0.9.2

func (r *Reader) SetDeadline(t time.Time)

SetDeadline controls how long Read and ReadInto will block waiting for samples.

Passing a zero time.Time will remove the deadline.

type Record

type Record struct {
	RawSample []byte

	// The minimum number of bytes remaining in the ring buffer after this Record has been read.
	Remaining int
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL