extern crate axvisor_api;
extern crate ax_memory_addr;
use axvisor_api::__priv;
pub mod some_demo {
use ax_memory_addr::MemoryAddr;
pub use ax_memory_addr::PhysAddr;
#[axvisor_api::api_def]
pub trait SomeDemoIf {
fn some_func() -> PhysAddr;
fn another_func(addr: PhysAddr);
}
pub fn provided_func() -> PhysAddr {
some_func().add(0x1000)
}
}
mod some_demo_impl {
use crate::some_demo::SomeDemoIf;
pub struct SomeDemoImpl;
#[axvisor_api::api_impl]
impl SomeDemoIf for SomeDemoImpl {
fn some_func() -> ax_memory_addr::PhysAddr {
ax_memory_addr::pa!(0x42)
}
fn another_func(addr: ax_memory_addr::PhysAddr) {
println!("Wow, the answer is {:?}", addr);
}
}
}
fn main() {
some_demo::another_func(some_demo::some_func());
some_demo::another_func(some_demo::provided_func());
}