use quote::quote;
use syn::{Ident, Type};
pub fn gen_offset(symbol: &Ident) -> proc_macro2::TokenStream {
quote! {
ax_percpu::__priv::symbol_offset(::core::ptr::addr_of!(#symbol).cast::<u8>() as usize)
}
}
pub fn gen_current_ptr_pinned(symbol: &Ident, pin: &Ident, ty: &Type) -> proc_macro2::TokenStream {
let offset = gen_offset(symbol);
quote! {
ax_percpu::__priv::current_symbol_ptr::<#ty>(#pin, #offset)
}
}
pub fn gen_remote_ptr(symbol: &Ident, area: &Ident, ty: &Type) -> proc_macro2::TokenStream {
let offset = gen_offset(symbol);
quote! {
ax_percpu::__priv::remote_symbol_ptr::<#ty>(#area, #offset)
}
}