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}
[])(build-perf-event-program {:keys [ctx-reg body return-value]
:or {return-value 0}})Build a complete perf event program.
Parameters:
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.
(defperf-event-instructions fn-name options & body)Define a perf event program as a function returning instructions.
Parameters:
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))(describe-perf-event perf-type)Return information about a perf event type.
Parameters:
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.
(make-perf-event-info program-name perf-type config instructions)Create program metadata for a perf event program.
Parameters:
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.
bpf_perf_event_data field offsets (x86_64).
bpf_perf_event_data field offsets (x86_64).
(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:
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).
(perf-event-offset field)Get offset for bpf_perf_event_data field.
Parameters:
Returns offset in bytes.
Get offset for bpf_perf_event_data field. Parameters: - field: Field keyword Returns offset in bytes.
(perf-event-prologue)(perf-event-prologue ctx-save-reg)Generate standard perf event program prologue.
Saves context pointer to callee-saved register.
Parameters:
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.
(perf-event-section-name)(perf-event-section-name name)Generate ELF section name for perf event program.
Parameters:
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".
(perf-get-addr ctx-reg dst-reg)Get event address from perf event context.
Parameters:
Returns ldx instruction.
Get event address from perf event context. Parameters: - ctx-reg: Register containing context pointer - dst-reg: Destination register Returns ldx instruction.
(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.
(perf-get-ip ctx-reg dst-reg)Get instruction pointer from pt_regs in perf event context.
Parameters:
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.
(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.
(perf-get-sample-period ctx-reg dst-reg)Get sample period from perf event context.
Parameters:
Returns ldx instruction.
Get sample period from perf event context. Parameters: - ctx-reg: Register containing context pointer - dst-reg: Destination register Returns ldx instruction.
(perf-get-stackid ctx-reg map-fd flags)Generate call to bpf_get_stackid helper.
Parameters:
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.
(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:
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.
(perf-read map-fd flags)Generate call to bpf_perf_event_read helper.
Reads counter value from perf event.
Parameters:
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.
(perf-return)(perf-return value)Generate instructions to return from perf event program.
Parameters:
Returns vector of instructions.
Generate instructions to return from perf event program. Parameters: - value: Return value (default 0) Returns vector of instructions.
(stackid-flag flag)Get stackid flag value.
Parameters:
Returns integer flag value.
Get stackid flag value. Parameters: - flag: Flag keyword or set of keywords Returns integer flag value.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |