#[inline(always)]
fn raw_trace_point_open(extended_bpf_program_file_descriptor: &ExtendedBpfProgramFileDescriptor, name: AlignedU64) -> Result<RawFd, i32>
{
let mut attr = bpf_attr::default();
attr.raw_tracepoint = BpfCommandRawTracePointOpen
{
name,
prog_fd: extended_bpf_program_file_descriptor.as_raw_fd(),
};
let result = attr.syscall(bpf_cmd::BPF_RAW_TRACEPOINT_OPEN);
if likely!(result >= 0)
{
Ok(result)
}
else if likely!(result == -1)
{
match errno().0
{
ENOENT => Err(ENOENT),
ENOMEM => Err(ENOMEM),
EINVAL => panic!("Invalid attr or invalid attach type"),
EPERM => panic!("Permission denied"),
EFAULT => panic!("Fault copying to / from userspace"),
errno @ _ => panic!("Unexpected error `{}` from bpf(BPF_RAW_TRACEPOINT_OPEN)", errno),
}
}
else
{
unreachable_code(format_args!("Unexpected result `{}` from bpf(BPF_RAW_TRACEPOINT_OPEN)", result))
}
}