Type Alias libbpf_rs::OpenProgram
source · pub type OpenProgram<'obj> = OpenProgramImpl<'obj>;Expand description
An immutable parsed but not yet loaded BPF program.
Aliased Type§
struct OpenProgram<'obj> { /* private fields */ }Implementations§
source§impl<'obj> OpenProgram<'obj>
impl<'obj> OpenProgram<'obj>
sourcepub fn new(prog: &'obj bpf_program) -> Self
pub fn new(prog: &'obj bpf_program) -> Self
Create a new [OpenProgram] from a ptr to a libbpf_sys::bpf_program.
pub fn prog_type(&self) -> ProgramType
sourcepub fn insn_cnt(&self) -> usize
pub fn insn_cnt(&self) -> usize
Returns the number of instructions that form the program.
Note: Keep in mind, libbpf can modify the program’s instructions
and consequently its instruction count, as it processes the BPF object file.
So [OpenProgram::insn_cnt] and [Program::insn_cnt] may return different values.
sourcepub fn insns(&self) -> &[bpf_insn]
pub fn insns(&self) -> &[bpf_insn]
Gives read-only access to BPF program’s underlying BPF instructions.
Keep in mind, libbpf can modify and append/delete BPF program’s
instructions as it processes BPF object file and prepares everything for
uploading into the kernel. So [OpenProgram::insns] and [Program::insns] may return
different sets of instructions. As an example, during BPF object load phase BPF program
instructions will be CO-RE-relocated, BPF subprograms instructions will be appended, ldimm64
instructions will have FDs embedded, etc. So instructions returned before load and after it
might be quite different.