Liking cljdoc? Tell your friends :D

clj-ebpf.ringbuf

Ring buffer helpers for BPF event streaming.

Ring buffers are the modern way to stream events from BPF programs to userspace. They're more efficient than perf buffers and support variable-sized records.

Usage: (require '[clj-ebpf.ringbuf :as rb])

;; Reserve space in ring buffer (rb/build-ringbuf-reserve event-ringbuf-fd 64) ;; r0 = pointer to reserved space, or NULL on failure

;; After writing data, submit (rb/build-ringbuf-submit :r9)

;; Or discard if not needed (rb/build-ringbuf-discard :r9)

Ring buffer helpers for BPF event streaming.

Ring buffers are the modern way to stream events from BPF programs to
userspace. They're more efficient than perf buffers and support
variable-sized records.

Usage:
  (require '[clj-ebpf.ringbuf :as rb])

  ;; Reserve space in ring buffer
  (rb/build-ringbuf-reserve event-ringbuf-fd 64)
  ;; r0 = pointer to reserved space, or NULL on failure

  ;; After writing data, submit
  (rb/build-ringbuf-submit :r9)

  ;; Or discard if not needed
  (rb/build-ringbuf-discard :r9)
raw docstring

BPF-FUNC-ringbuf-discardclj

source

BPF-FUNC-ringbuf-outputclj

source

BPF-FUNC-ringbuf-queryclj

source

BPF-FUNC-ringbuf-reserveclj

source

BPF-FUNC-ringbuf-submitclj

source

BPF-RB-AVAIL-DATAclj

source

BPF-RB-CONS-POSclj

source

BPF-RB-FORCE-WAKEUPclj

source

BPF-RB-NO-WAKEUPclj

source

BPF-RB-PROD-POSclj

source

BPF-RB-RING-SIZEclj

source

build-ringbuf-discardclj

(build-ringbuf-discard ptr-reg)
(build-ringbuf-discard ptr-reg flags)

Discard a previously reserved ring buffer entry.

Use this when you decide not to send an event after reserving space. After calling discard, the reserved pointer becomes invalid.

Args: ptr-reg: Register containing pointer from bpf_ringbuf_reserve flags: Discard flags (default 0): - 0: Normal discard - BPF-RB-NO-WAKEUP: Don't wake up reader

Returns: Vector of instructions

Discard a previously reserved ring buffer entry.

Use this when you decide not to send an event after reserving space.
After calling discard, the reserved pointer becomes invalid.

Args:
  ptr-reg: Register containing pointer from bpf_ringbuf_reserve
  flags: Discard flags (default 0):
         - 0: Normal discard
         - BPF-RB-NO-WAKEUP: Don't wake up reader

Returns: Vector of instructions
sourceraw docstring

build-ringbuf-outputclj

(build-ringbuf-output ringbuf-fd data-reg size flags)

Output data directly to ring buffer (combines reserve+copy+submit).

This is simpler but less flexible than the reserve/submit pattern. Use this when you have the complete event data ready to send.

Args: ringbuf-fd: Ring buffer map file descriptor data-reg: Register with pointer to data size: Size of data to output flags: Output flags: - 0: Normal output - BPF-RB-NO-WAKEUP: Don't wake up reader - BPF-RB-FORCE-WAKEUP: Force wake up reader

Returns: Vector of instructions Result: r0 = 0 on success, negative on failure

Output data directly to ring buffer (combines reserve+copy+submit).

This is simpler but less flexible than the reserve/submit pattern.
Use this when you have the complete event data ready to send.

Args:
  ringbuf-fd: Ring buffer map file descriptor
  data-reg: Register with pointer to data
  size: Size of data to output
  flags: Output flags:
         - 0: Normal output
         - BPF-RB-NO-WAKEUP: Don't wake up reader
         - BPF-RB-FORCE-WAKEUP: Force wake up reader

Returns: Vector of instructions
Result: r0 = 0 on success, negative on failure
sourceraw docstring

build-ringbuf-queryclj

(build-ringbuf-query ringbuf-fd flags)

Query ring buffer properties.

Args: ringbuf-fd: Ring buffer map file descriptor flags: Query type: - BPF-RB-AVAIL-DATA: Available data for consumption - BPF-RB-RING-SIZE: Total ring buffer size - BPF-RB-CONS-POS: Consumer position - BPF-RB-PROD-POS: Producer position

Returns: Vector of instructions Result: r0 = queried value

Query ring buffer properties.

Args:
  ringbuf-fd: Ring buffer map file descriptor
  flags: Query type:
         - BPF-RB-AVAIL-DATA: Available data for consumption
         - BPF-RB-RING-SIZE: Total ring buffer size
         - BPF-RB-CONS-POS: Consumer position
         - BPF-RB-PROD-POS: Producer position

Returns: Vector of instructions
Result: r0 = queried value
sourceraw docstring

build-ringbuf-reserveclj

(build-ringbuf-reserve ringbuf-fd size)
(build-ringbuf-reserve ringbuf-fd size flags)

Reserve space in a ring buffer.

Args: ringbuf-fd: Ring buffer map file descriptor size: Number of bytes to reserve flags: Reserved flags, must be 0 (default)

Returns: Vector of instructions Result: r0 = pointer to reserved space, or NULL on failure

Example: (build-ringbuf-reserve event-ringbuf-fd 64)

Usage pattern:

  1. Reserve space with build-ringbuf-reserve
  2. Check r0 for NULL (reservation failed)
  3. Save pointer to callee-saved register (e.g., r9)
  4. Write event data to reserved space
  5. Submit with build-ringbuf-submit
Reserve space in a ring buffer.

Args:
  ringbuf-fd: Ring buffer map file descriptor
  size: Number of bytes to reserve
  flags: Reserved flags, must be 0 (default)

Returns: Vector of instructions
Result: r0 = pointer to reserved space, or NULL on failure

Example:
  (build-ringbuf-reserve event-ringbuf-fd 64)

Usage pattern:
  1. Reserve space with build-ringbuf-reserve
  2. Check r0 for NULL (reservation failed)
  3. Save pointer to callee-saved register (e.g., r9)
  4. Write event data to reserved space
  5. Submit with build-ringbuf-submit
sourceraw docstring

build-ringbuf-reserve-or-skipclj

(build-ringbuf-reserve-or-skip ringbuf-fd size save-reg skip-label)

Reserve ring buffer space, jumping to skip-label if reservation fails.

This is a common pattern that combines reserve + NULL check.

Args: ringbuf-fd: Ring buffer map file descriptor size: Number of bytes to reserve save-reg: Callee-saved register to save pointer (:r6-:r9) skip-label: Label to jump to if reservation fails

Returns: Vector of instructions/pseudo-instructions Result: save-reg = pointer to reserved space (on success path)

Reserve ring buffer space, jumping to skip-label if reservation fails.

This is a common pattern that combines reserve + NULL check.

Args:
  ringbuf-fd: Ring buffer map file descriptor
  size: Number of bytes to reserve
  save-reg: Callee-saved register to save pointer (:r6-:r9)
  skip-label: Label to jump to if reservation fails

Returns: Vector of instructions/pseudo-instructions
Result: save-reg = pointer to reserved space (on success path)
sourceraw docstring

build-ringbuf-submitclj

(build-ringbuf-submit ptr-reg)
(build-ringbuf-submit ptr-reg flags)

Submit a previously reserved ring buffer entry.

After calling submit, the reserved pointer becomes invalid and should not be used.

Args: ptr-reg: Register containing pointer from bpf_ringbuf_reserve flags: Submit flags (default 0): - 0: Normal submit - BPF-RB-NO-WAKEUP: Don't wake up reader - BPF-RB-FORCE-WAKEUP: Force wake up reader

Returns: Vector of instructions

Submit a previously reserved ring buffer entry.

After calling submit, the reserved pointer becomes invalid and
should not be used.

Args:
  ptr-reg: Register containing pointer from bpf_ringbuf_reserve
  flags: Submit flags (default 0):
         - 0: Normal submit
         - BPF-RB-NO-WAKEUP: Don't wake up reader
         - BPF-RB-FORCE-WAKEUP: Force wake up reader

Returns: Vector of instructions
sourceraw docstring

build-write-u32-to-ringbufclj

(build-write-u32-to-ringbuf ptr-reg offset value-reg)

Write a 32-bit value to a reserved ring buffer location.

Args: ptr-reg: Register containing pointer to ring buffer space offset: Offset within the reserved space value-reg: Register containing the value to write

Returns: Vector of 1 instruction

Write a 32-bit value to a reserved ring buffer location.

Args:
  ptr-reg: Register containing pointer to ring buffer space
  offset: Offset within the reserved space
  value-reg: Register containing the value to write

Returns: Vector of 1 instruction
sourceraw docstring

build-write-u64-to-ringbufclj

(build-write-u64-to-ringbuf ptr-reg offset value-reg)

Write a 64-bit value to a reserved ring buffer location.

Args: ptr-reg: Register containing pointer to ring buffer space offset: Offset within the reserved space value-reg: Register containing the value to write

Returns: Vector of 1 instruction

Write a 64-bit value to a reserved ring buffer location.

Args:
  ptr-reg: Register containing pointer to ring buffer space
  offset: Offset within the reserved space
  value-reg: Register containing the value to write

Returns: Vector of 1 instruction
sourceraw docstring

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
Move to previous article
Move to next article
Ctrl+/Jump to the search field
× close