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 ¶
var ( ErrClosed = os.ErrClosed ErrFlushed = epoll.ErrFlushed )
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 (*Reader) AvailableBytes ¶ added in v0.17.0
AvailableBytes returns the amount of data available to read in the ring buffer in bytes.
func (*Reader) BufferSize ¶ added in v0.12.3
BufferSize returns the size in bytes of the ring buffer
func (*Reader) Flush ¶ added in v0.16.0
Flush unblocks Read/ReadInto and successive Read/ReadInto calls will return pending samples at this point, until you receive a ErrFlushed error.
func (*Reader) Read ¶
Read the next record from the BPF ringbuf.
Calling [Close] interrupts the method with os.ErrClosed. Calling [Flush] makes it return all records currently in the ring buffer, followed by ErrFlushed.
Returns os.ErrDeadlineExceeded if a deadline was set and after all records have been read from the ring.
See [ReadInto] for a more efficient version of this method.
func (*Reader) ReadInto ¶ added in v0.9.0
ReadInto is like Read except that it allows reusing Record and associated buffers.
func (*Reader) SetDeadline ¶ added in v0.9.2
SetDeadline controls how long Read and ReadInto will block waiting for samples.
Passing a zero time.Time will remove the deadline.