123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- //! [](https://aya-rs.dev)
- //!
- //! A library to write eBPF programs.
- //!
- //! Aya-bpf is an eBPF library built with a focus on operability and developer experience.
- //! It is the kernel-space counterpart of [Aya](https://docs.rs/aya)
- #![doc(
- html_logo_url = "https://aya-rs.dev/assets/images/crabby.svg",
- html_favicon_url = "https://aya-rs.dev/assets/images/crabby.svg"
- )]
- #![cfg_attr(unstable, feature(never_type))]
- #![allow(clippy::missing_safety_doc)]
- #![no_std]
- pub use aya_bpf_bindings::bindings;
- mod args;
- pub use args::PtRegs;
- pub mod helpers;
- pub mod maps;
- pub mod programs;
- pub use aya_bpf_cty as cty;
- use core::ffi::c_void;
- use cty::{c_int, c_long};
- use helpers::{bpf_get_current_comm, bpf_get_current_pid_tgid};
- pub use aya_bpf_macros as macros;
- pub const TASK_COMM_LEN: usize = 16;
- pub trait BpfContext {
- fn as_ptr(&self) -> *mut c_void;
- #[inline]
- fn command(&self) -> Result<[u8; TASK_COMM_LEN], c_long> {
- bpf_get_current_comm()
- }
- fn pid(&self) -> u32 {
- bpf_get_current_pid_tgid() as u32
- }
- fn tgid(&self) -> u32 {
- (bpf_get_current_pid_tgid() >> 32) as u32
- }
- }
- #[no_mangle]
- pub unsafe extern "C" fn memset(s: *mut u8, c: c_int, n: usize) {
- let base = s as usize;
- for i in 0..n {
- *((base + i) as *mut u8) = c as u8;
- }
- }
- #[no_mangle]
- pub unsafe extern "C" fn memcpy(dest: *mut u8, src: *mut u8, n: usize) {
- let dest_base = dest as usize;
- let src_base = src as usize;
- for i in 0..n {
- *((dest_base + i) as *mut u8) = *((src_base + i) as *mut u8);
- }
- }
|