Struct memflow::mem::phys_mem::middleware::metrics::PhysicalMemoryMetrics
source · pub struct PhysicalMemoryMetrics<T> { /* private fields */ }
Expand description
The metrics middleware collects metrics data (latency and number of bytes) for all read and write operations.
Additionally metrics are outputted via ::log::info
in regular intervals.
Since this middleware implements PhysicalMemory
it can be used as a replacement
in all structs and functions that require the PhysicalMemory
trait.
Implementations§
source§impl<T: PhysicalMemory> PhysicalMemoryMetrics<T>
impl<T: PhysicalMemory> PhysicalMemoryMetrics<T>
sourcepub fn into_inner(self) -> T
pub fn into_inner(self) -> T
Consumes self and returns the containing memory object.
This function can be useful in case the ownership over the memory object has been given to the cache
when it was being constructed.
It will destroy the self
and return back the ownership of the underlying memory object.
Examples
use memflow::architecture::x86::x64;
use memflow::mem::{PhysicalMemory, PhysicalMemoryMetrics, MemoryView};
fn build<T: PhysicalMemory>(mem: T) -> T {
let mut middleware = PhysicalMemoryMetrics::new(mem);
// use the middleware...
let value: u64 = middleware.phys_view().read(0.into()).unwrap();
assert_eq!(value, MAGIC_VALUE);
// retrieve ownership of mem and return it back
middleware.into_inner()
}
Trait Implementations§
source§impl<T> Clone for PhysicalMemoryMetrics<T>where
T: Clone,
impl<T> Clone for PhysicalMemoryMetrics<T>where
T: Clone,
source§impl<'cglue_a, CGlueInst: Deref<Target = PhysicalMemoryMetrics<T>>, CGlueCtx: ContextBounds, T: PhysicalMemory> ConnectorInstanceVtableFiller<'cglue_a, CGlueInst, CGlueCtx> for PhysicalMemoryMetrics<T>
impl<'cglue_a, CGlueInst: Deref<Target = PhysicalMemoryMetrics<T>>, CGlueCtx: ContextBounds, T: PhysicalMemory> ConnectorInstanceVtableFiller<'cglue_a, CGlueInst, CGlueCtx> for PhysicalMemoryMetrics<T>
fn fill_table( table: ConnectorInstanceVtables<'cglue_a, CGlueInst, CGlueCtx> ) -> ConnectorInstanceVtables<'cglue_a, CGlueInst, CGlueCtx>
source§impl<T: PhysicalMemory> PhysicalMemory for PhysicalMemoryMetrics<T>
impl<T: PhysicalMemory> PhysicalMemory for PhysicalMemoryMetrics<T>
fn phys_read_raw_iter( &mut self, _: PhysicalReadMemOps<'_, '_, '_, '_> ) -> Result<()>
fn phys_write_raw_iter( &mut self, _: PhysicalWriteMemOps<'_, '_, '_, '_> ) -> Result<()>
source§fn metadata(&self) -> PhysicalMemoryMetadata
fn metadata(&self) -> PhysicalMemoryMetadata
Retrieve metadata about the physical memory Read more
source§fn set_mem_map(&mut self, mem_map: &[PhysicalMemoryMapping])
fn set_mem_map(&mut self, mem_map: &[PhysicalMemoryMapping])
Sets the memory mapping for the physical memory Read more
fn phys_read_into<T: Pod + ?Sized>(
&mut self,
addr: PhysicalAddress,
out: &mut T
) -> Result<()>where
Self: Sized,
fn phys_write<T: Pod + ?Sized>(
&mut self,
addr: PhysicalAddress,
data: &T
) -> Result<()>where
Self: Sized,
fn into_phys_view(self) -> PhysicalMemoryView<Self>where
Self: Sized,
fn phys_view(&mut self) -> PhysicalMemoryView<Fwd<&mut Self>>where
Self: Sized,
fn into_mem_view(self) -> PhysicalMemoryView<Self>where
Self: Sized,
fn mem_view(&mut self) -> PhysicalMemoryView<Fwd<&mut Self>>where
Self: Sized,
Auto Trait Implementations§
impl<T> RefUnwindSafe for PhysicalMemoryMetrics<T>where
T: RefUnwindSafe,
impl<T> Send for PhysicalMemoryMetrics<T>where
T: Send,
impl<T> Sync for PhysicalMemoryMetrics<T>where
T: Sync,
impl<T> Unpin for PhysicalMemoryMetrics<T>where
T: Unpin,
impl<T> UnwindSafe for PhysicalMemoryMetrics<T>where
T: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<'a, T> BorrowOwned<'a> for Twhere
T: 'a + Clone,
impl<'a, T> BorrowOwned<'a> for Twhere
T: 'a + Clone,
fn r_borrow( this: &'a <T as BorrowOwned<'a>>::ROwned ) -> <T as BorrowOwned<'a>>::RBorrowed
fn r_to_owned( this: <T as BorrowOwned<'a>>::RBorrowed ) -> <T as BorrowOwned<'a>>::ROwned
fn deref_borrowed(this: &<T as BorrowOwned<'a>>::RBorrowed) -> &T
fn deref_owned(this: &<T as BorrowOwned<'a>>::ROwned) -> &T
fn from_cow_borrow(this: &'a T) -> <T as BorrowOwned<'a>>::RBorrowed
fn from_cow_owned(this: <T as ToOwned>::Owned) -> <T as BorrowOwned<'a>>::ROwned
fn into_cow_borrow(this: <T as BorrowOwned<'a>>::RBorrowed) -> &'a T
fn into_cow_owned(this: <T as BorrowOwned<'a>>::ROwned) -> <T as ToOwned>::Owned
source§impl<T> GetWithMetadata for T
impl<T> GetWithMetadata for T
§type ForSelf = WithMetadata_<T, T>
type ForSelf = WithMetadata_<T, T>
This is always
WithMetadata_<Self, Self>
§impl<S> ROExtAcc for S
impl<S> ROExtAcc for S
§fn f_get<F>(&self, offset: FieldOffset<S, F, Aligned>) -> &F
fn f_get<F>(&self, offset: FieldOffset<S, F, Aligned>) -> &F
Gets a reference to a field, determined by
offset
. Read more§fn f_get_mut<F>(&mut self, offset: FieldOffset<S, F, Aligned>) -> &mut F
fn f_get_mut<F>(&mut self, offset: FieldOffset<S, F, Aligned>) -> &mut F
Gets a muatble reference to a field, determined by
offset
. Read more§fn f_get_ptr<F, A>(&self, offset: FieldOffset<S, F, A>) -> *const F
fn f_get_ptr<F, A>(&self, offset: FieldOffset<S, F, A>) -> *const F
Gets a const pointer to a field,
the field is determined by
offset
. Read more§fn f_get_mut_ptr<F, A>(&mut self, offset: FieldOffset<S, F, A>) -> *mut F
fn f_get_mut_ptr<F, A>(&mut self, offset: FieldOffset<S, F, A>) -> *mut F
Gets a mutable pointer to a field, determined by
offset
. Read more§impl<S> ROExtOps<Aligned> for S
impl<S> ROExtOps<Aligned> for S
§fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Aligned>, value: F) -> F
fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Aligned>, value: F) -> F
Replaces a field (determined by
offset
) with value
,
returning the previous value of the field. Read more§fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Aligned>) -> Fwhere
F: Copy,
fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Aligned>) -> Fwhere
F: Copy,
§impl<S> ROExtOps<Unaligned> for S
impl<S> ROExtOps<Unaligned> for S
§fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Unaligned>, value: F) -> F
fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Unaligned>, value: F) -> F
Replaces a field (determined by
offset
) with value
,
returning the previous value of the field. Read more§fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Unaligned>) -> Fwhere
F: Copy,
fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Unaligned>) -> Fwhere
F: Copy,
§impl<T> SelfOps for Twhere
T: ?Sized,
impl<T> SelfOps for Twhere
T: ?Sized,
§fn piped<F, U>(self, f: F) -> U
fn piped<F, U>(self, f: F) -> U
Emulates the pipeline operator, allowing method syntax in more places. Read more
§fn piped_ref<'a, F, U>(&'a self, f: F) -> U
fn piped_ref<'a, F, U>(&'a self, f: F) -> U
The same as
piped
except that the function takes &Self
Useful for functions that take &Self
instead of Self
. Read more§fn piped_mut<'a, F, U>(&'a mut self, f: F) -> Uwhere
F: FnOnce(&'a mut Self) -> U,
fn piped_mut<'a, F, U>(&'a mut self, f: F) -> Uwhere
F: FnOnce(&'a mut Self) -> U,
The same as
piped
, except that the function takes &mut Self
.
Useful for functions that take &mut Self
instead of Self
.§fn mutated<F>(self, f: F) -> Self
fn mutated<F>(self, f: F) -> Self
Mutates self using a closure taking self by mutable reference,
passing it along the method chain. Read more
§fn observe<F>(self, f: F) -> Self
fn observe<F>(self, f: F) -> Self
Observes the value of self, passing it along unmodified.
Useful in long method chains. Read more
§fn as_ref_<T>(&self) -> &T
fn as_ref_<T>(&self) -> &T
Performs a reference to reference conversion with
AsRef
,
using the turbofish .as_ref_::<_>()
syntax. Read moresource§impl<This> TransmuteElement for Thiswhere
This: ?Sized,
impl<This> TransmuteElement for Thiswhere
This: ?Sized,
source§unsafe fn transmute_element<T>(self) -> Self::TransmutedPtrwhere
Self: CanTransmuteElement<T>,
unsafe fn transmute_element<T>(self) -> Self::TransmutedPtrwhere
Self: CanTransmuteElement<T>,
Transmutes the element type of this pointer.. Read more
§impl<T> TypeIdentity for Twhere
T: ?Sized,
impl<T> TypeIdentity for Twhere
T: ?Sized,
§fn as_type_mut(&mut self) -> &mut Self::Type
fn as_type_mut(&mut self) -> &mut Self::Type
Converts a mutable reference back to the original type.
§fn into_type_box(self: Box<Self>) -> Box<Self::Type>
fn into_type_box(self: Box<Self>) -> Box<Self::Type>
Converts a box back to the original type.
§fn into_type_arc(this: Arc<Self>) -> Arc<Self::Type>
fn into_type_arc(this: Arc<Self>) -> Arc<Self::Type>
Converts an Arc back to the original type. Read more
§fn into_type_rc(this: Rc<Self>) -> Rc<Self::Type>
fn into_type_rc(this: Rc<Self>) -> Rc<Self::Type>
Converts an Rc back to the original type. Read more
§fn from_type_ref(this: &Self::Type) -> &Self
fn from_type_ref(this: &Self::Type) -> &Self
Converts a reference back to the original type.
§fn from_type_mut(this: &mut Self::Type) -> &mut Self
fn from_type_mut(this: &mut Self::Type) -> &mut Self
Converts a mutable reference back to the original type.
§fn from_type_box(this: Box<Self::Type>) -> Box<Self>
fn from_type_box(this: Box<Self::Type>) -> Box<Self>
Converts a box back to the original type.
§fn from_type_arc(this: Arc<Self::Type>) -> Arc<Self>
fn from_type_arc(this: Arc<Self::Type>) -> Arc<Self>
Converts an Arc back to the original type.
§fn from_type_rc(this: Rc<Self::Type>) -> Rc<Self>
fn from_type_rc(this: Rc<Self::Type>) -> Rc<Self>
Converts an Rc back to the original type.