Liking cljdoc? Tell your friends :D

clj-ebpf.dsl.perf-event

High-level Perf Event DSL for BPF programs.

Perf event programs are attached to hardware or software performance events and can sample CPU state, collect stack traces, and more.

Context: bpf_perf_event_data contains pt_regs and sample info.

Example: (defperf-event-instructions sample-cpu {:type :software :config :cpu-clock} [])

High-level Perf Event DSL for BPF programs.

Perf event programs are attached to hardware or software performance
events and can sample CPU state, collect stack traces, and more.

Context: bpf_perf_event_data contains pt_regs and sample info.

Example:
  (defperf-event-instructions sample-cpu
    {:type :software
     :config :cpu-clock}
    [])
raw docstring

build-perf-event-programclj

(build-perf-event-program {:keys [ctx-reg body return-value]
                           :or {return-value 0}})

Build a complete perf event program.

Parameters:

  • opts: Map with: :ctx-reg - Register to save context (optional) :body - Vector of body instructions :return-value - Return value (default 0)

Returns assembled program bytes.

Build a complete perf event program.

Parameters:
- opts: Map with:
  :ctx-reg - Register to save context (optional)
  :body - Vector of body instructions
  :return-value - Return value (default 0)

Returns assembled program bytes.
sourceraw docstring

defperf-event-instructionscljmacro

(defperf-event-instructions fn-name options & body)

Define a perf event program as a function returning instructions.

Parameters:

  • fn-name: Name for the defined function
  • options: Map with: :type - Perf type (:hardware, :software, etc.) :config - Event config :ctx-reg - Register to save context (optional)
  • body: Body expressions

Example: (defperf-event-instructions cpu-profiler {:type :software :config :cpu-clock :ctx-reg :r6} (perf-get-current-pid))

Define a perf event program as a function returning instructions.

Parameters:
- fn-name: Name for the defined function
- options: Map with:
  :type - Perf type (:hardware, :software, etc.)
  :config - Event config
  :ctx-reg - Register to save context (optional)
- body: Body expressions

Example:
  (defperf-event-instructions cpu-profiler
    {:type :software
     :config :cpu-clock
     :ctx-reg :r6}
    (perf-get-current-pid))
sourceraw docstring

describe-perf-eventclj

(describe-perf-event perf-type)

Return information about a perf event type.

Parameters:

  • perf-type: Type keyword (:hardware, :software, etc.)

Returns map with event information.

Return information about a perf event type.

Parameters:
- perf-type: Type keyword (:hardware, :software, etc.)

Returns map with event information.
sourceraw docstring

hardware-eventsclj

Hardware performance events.

Hardware performance events.
sourceraw docstring

make-perf-event-infoclj

(make-perf-event-info program-name perf-type config instructions)

Create program metadata for a perf event program.

Parameters:

  • program-name: Name for the BPF program
  • perf-type: Perf type (:hardware, :software, etc.)
  • config: Event config
  • instructions: Program instructions

Returns map with program metadata.

Create program metadata for a perf event program.

Parameters:
- program-name: Name for the BPF program
- perf-type: Perf type (:hardware, :software, etc.)
- config: Event config
- instructions: Program instructions

Returns map with program metadata.
sourceraw docstring

perf-event-data-offsetsclj

bpf_perf_event_data field offsets (x86_64).

bpf_perf_event_data field offsets (x86_64).
sourceraw docstring

perf-event-get-regsclj

(perf-event-get-regs ctx-reg)

Get pointer to pt_regs from perf event context.

The pt_regs starts at offset 0, so ctx pointer is also regs pointer.

Parameters:

  • ctx-reg: Register containing context pointer

Returns the same register (pt_regs is at offset 0).

Get pointer to pt_regs from perf event context.

The pt_regs starts at offset 0, so ctx pointer is also regs pointer.

Parameters:
- ctx-reg: Register containing context pointer

Returns the same register (pt_regs is at offset 0).
sourceraw docstring

perf-event-offsetclj

(perf-event-offset field)

Get offset for bpf_perf_event_data field.

Parameters:

  • field: Field keyword

Returns offset in bytes.

Get offset for bpf_perf_event_data field.

Parameters:
- field: Field keyword

Returns offset in bytes.
sourceraw docstring

perf-event-prologueclj

(perf-event-prologue)
(perf-event-prologue ctx-save-reg)

Generate standard perf event program prologue.

Saves context pointer to callee-saved register.

Parameters:

  • ctx-save-reg: Register to save context (optional)

Returns vector of instructions.

Generate standard perf event program prologue.

Saves context pointer to callee-saved register.

Parameters:
- ctx-save-reg: Register to save context (optional)

Returns vector of instructions.
sourceraw docstring

perf-event-section-nameclj

(perf-event-section-name)
(perf-event-section-name name)

Generate ELF section name for perf event program.

Parameters:

  • name: Optional program name

Returns section name like "perf_event" or "perf_event/name".

Generate ELF section name for perf event program.

Parameters:
- name: Optional program name

Returns section name like "perf_event" or "perf_event/name".
sourceraw docstring

perf-get-addrclj

(perf-get-addr ctx-reg dst-reg)

Get event address from perf event context.

Parameters:

  • ctx-reg: Register containing context pointer
  • dst-reg: Destination register

Returns ldx instruction.

Get event address from perf event context.

Parameters:
- ctx-reg: Register containing context pointer
- dst-reg: Destination register

Returns ldx instruction.
sourceraw docstring

perf-get-current-pidclj

(perf-get-current-pid)

Generate instructions to get current PID.

Returns vector of instructions with PID in r0.

Generate instructions to get current PID.

Returns vector of instructions with PID in r0.
sourceraw docstring

perf-get-ipclj

(perf-get-ip ctx-reg dst-reg)

Get instruction pointer from pt_regs in perf event context.

Parameters:

  • ctx-reg: Register containing context pointer
  • dst-reg: Destination register

Returns ldx instruction.

Get instruction pointer from pt_regs in perf event context.

Parameters:
- ctx-reg: Register containing context pointer
- dst-reg: Destination register

Returns ldx instruction.
sourceraw docstring

perf-get-ktime-nsclj

(perf-get-ktime-ns)

Generate instruction to get kernel time.

Returns call instruction with time in r0.

Generate instruction to get kernel time.

Returns call instruction with time in r0.
sourceraw docstring

perf-get-sample-periodclj

(perf-get-sample-period ctx-reg dst-reg)

Get sample period from perf event context.

Parameters:

  • ctx-reg: Register containing context pointer
  • dst-reg: Destination register

Returns ldx instruction.

Get sample period from perf event context.

Parameters:
- ctx-reg: Register containing context pointer
- dst-reg: Destination register

Returns ldx instruction.
sourceraw docstring

perf-get-stackidclj

(perf-get-stackid ctx-reg map-fd flags)

Generate call to bpf_get_stackid helper.

Parameters:

  • ctx-reg: Register containing context pointer
  • map-fd: Stack map file descriptor
  • flags: Flags (e.g., BPF_F_USER_STACK, BPF_F_FAST_STACK_CMP)

Returns vector of instructions.

Generate call to bpf_get_stackid helper.

Parameters:
- ctx-reg: Register containing context pointer
- map-fd: Stack map file descriptor
- flags: Flags (e.g., BPF_F_USER_STACK, BPF_F_FAST_STACK_CMP)

Returns vector of instructions.
sourceraw docstring

perf-outputclj

(perf-output ctx-reg map-fd flags data-reg size)

Generate call to bpf_perf_event_output helper.

Outputs data to a perf buffer.

Parameters:

  • ctx-reg: Register containing context pointer
  • map-fd: Perf event array map FD
  • flags: Flags
  • data-reg: Register pointing to data
  • size: Data size

Returns vector of instructions.

Generate call to bpf_perf_event_output helper.

Outputs data to a perf buffer.

Parameters:
- ctx-reg: Register containing context pointer
- map-fd: Perf event array map FD
- flags: Flags
- data-reg: Register pointing to data
- size: Data size

Returns vector of instructions.
sourceraw docstring

perf-readclj

(perf-read map-fd flags)

Generate call to bpf_perf_event_read helper.

Reads counter value from perf event.

Parameters:

  • map-fd: Perf event array map FD
  • flags: Index and flags

Returns vector of instructions.

Generate call to bpf_perf_event_read helper.

Reads counter value from perf event.

Parameters:
- map-fd: Perf event array map FD
- flags: Index and flags

Returns vector of instructions.
sourceraw docstring

perf-returnclj

(perf-return)
(perf-return value)

Generate instructions to return from perf event program.

Parameters:

  • value: Return value (default 0)

Returns vector of instructions.

Generate instructions to return from perf event program.

Parameters:
- value: Return value (default 0)

Returns vector of instructions.
sourceraw docstring

perf-typesclj

Perf event types.

Perf event types.
sourceraw docstring

software-eventsclj

Software performance events.

Software performance events.
sourceraw docstring

stackid-flagclj

(stackid-flag flag)

Get stackid flag value.

Parameters:

  • flag: Flag keyword or set of keywords

Returns integer flag value.

Get stackid flag value.

Parameters:
- flag: Flag keyword or set of keywords

Returns integer flag value.
sourceraw docstring

stackid-flagsclj

Flags for bpf_get_stackid.

Flags for bpf_get_stackid.
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