pub struct EdgeAnalyzer<H: HandleControlFlow, R: ReadMemory> { /* private fields */ }Expand description
An edge analyzer that implements HandlePacket trait.
The analyzer will trace the control flow during the Intel PT packets, and invoke
corresponding callbacks in the given control flow handler that implements
HandleControlFlow.
Implementations§
Source§impl<H: HandleControlFlow, R: ReadMemory> EdgeAnalyzer<H, R>
impl<H: HandleControlFlow, R: ReadMemory> EdgeAnalyzer<H, R>
Sourcepub fn diagnose(&self) -> DiagnosticInformation
pub fn diagnose(&self) -> DiagnosticInformation
Get diagnostic information
Source§impl<H: HandleControlFlow, R: ReadMemory> EdgeAnalyzer<H, R>
impl<H: HandleControlFlow, R: ReadMemory> EdgeAnalyzer<H, R>
Sourcepub fn into_handler_and_reader(self) -> (H, R)
pub fn into_handler_and_reader(self) -> (H, R)
Consume the total structure and return the ownership of handler and reader
Trait Implementations§
Source§impl<H, R> HandlePacket for EdgeAnalyzer<H, R>
impl<H, R> HandlePacket for EdgeAnalyzer<H, R>
Source§type Error = AnalyzerError<H, R>
type Error = AnalyzerError<H, R>
Custom error type
Source§fn at_decode_begin(&mut self) -> Result<(), Self::Error>
fn at_decode_begin(&mut self) -> Result<(), Self::Error>
Callback at begin of decoding. Read more
Source§fn on_short_tnt_packet(
&mut self,
context: &DecoderContext,
packet_byte: NonZero<u8>,
highest_bit: u32,
) -> Result<(), Self::Error>
fn on_short_tnt_packet( &mut self, context: &DecoderContext, packet_byte: NonZero<u8>, highest_bit: u32, ) -> Result<(), Self::Error>
Handle short TNT packet Read more
Source§fn on_long_tnt_packet(
&mut self,
context: &DecoderContext,
packet_bytes: NonZero<u64>,
highest_bit: u32,
) -> Result<(), Self::Error>
fn on_long_tnt_packet( &mut self, context: &DecoderContext, packet_bytes: NonZero<u64>, highest_bit: u32, ) -> Result<(), Self::Error>
Handle short TNT packet Read more
Source§fn on_tip_packet(
&mut self,
context: &DecoderContext,
ip_reconstruction_pattern: IpReconstructionPattern,
) -> Result<(), Self::Error>
fn on_tip_packet( &mut self, context: &DecoderContext, ip_reconstruction_pattern: IpReconstructionPattern, ) -> Result<(), Self::Error>
Handle TIP packet
Source§fn on_tip_pgd_packet(
&mut self,
context: &DecoderContext,
ip_reconstruction_pattern: IpReconstructionPattern,
) -> Result<(), Self::Error>
fn on_tip_pgd_packet( &mut self, context: &DecoderContext, ip_reconstruction_pattern: IpReconstructionPattern, ) -> Result<(), Self::Error>
Handle TIP.PGD packet
Source§fn on_tip_pge_packet(
&mut self,
_context: &DecoderContext,
ip_reconstruction_pattern: IpReconstructionPattern,
) -> Result<(), Self::Error>
fn on_tip_pge_packet( &mut self, _context: &DecoderContext, ip_reconstruction_pattern: IpReconstructionPattern, ) -> Result<(), Self::Error>
Handle TIP.PGE packet
Source§fn on_fup_packet(
&mut self,
_context: &DecoderContext,
ip_reconstruction_pattern: IpReconstructionPattern,
) -> Result<(), Self::Error>
fn on_fup_packet( &mut self, _context: &DecoderContext, ip_reconstruction_pattern: IpReconstructionPattern, ) -> Result<(), Self::Error>
Handle FUP packet
Source§fn on_ovf_packet(
&mut self,
_context: &DecoderContext,
) -> Result<(), Self::Error>
fn on_ovf_packet( &mut self, _context: &DecoderContext, ) -> Result<(), Self::Error>
Handle OVF packet
Source§fn on_psb_packet(
&mut self,
_context: &DecoderContext,
) -> Result<(), Self::Error>
fn on_psb_packet( &mut self, _context: &DecoderContext, ) -> Result<(), Self::Error>
Handle PSB packet
Source§fn on_pad_packet(&mut self, context: &DecoderContext) -> Result<(), Self::Error>
fn on_pad_packet(&mut self, context: &DecoderContext) -> Result<(), Self::Error>
Handle PAD packet
Source§fn on_cyc_packet(
&mut self,
context: &DecoderContext,
cyc_packet: &[u8],
) -> Result<(), Self::Error>
fn on_cyc_packet( &mut self, context: &DecoderContext, cyc_packet: &[u8], ) -> Result<(), Self::Error>
Handle CYC packet Read more
Source§fn on_mode_packet(
&mut self,
context: &DecoderContext,
leaf_id: u8,
mode: u8,
) -> Result<(), Self::Error>
fn on_mode_packet( &mut self, context: &DecoderContext, leaf_id: u8, mode: u8, ) -> Result<(), Self::Error>
Handle MODE packet Read more
Source§fn on_mtc_packet(
&mut self,
context: &DecoderContext,
ctc_payload: u8,
) -> Result<(), Self::Error>
fn on_mtc_packet( &mut self, context: &DecoderContext, ctc_payload: u8, ) -> Result<(), Self::Error>
Handle MTC packet Read more
Source§fn on_tsc_packet(
&mut self,
context: &DecoderContext,
tsc_value: u64,
) -> Result<(), Self::Error>
fn on_tsc_packet( &mut self, context: &DecoderContext, tsc_value: u64, ) -> Result<(), Self::Error>
Handle TSC packet Read more
Source§fn on_cbr_packet(
&mut self,
context: &DecoderContext,
core_bus_ratio: u8,
) -> Result<(), Self::Error>
fn on_cbr_packet( &mut self, context: &DecoderContext, core_bus_ratio: u8, ) -> Result<(), Self::Error>
Handle CBR packet Read more
Source§fn on_tma_packet(
&mut self,
context: &DecoderContext,
ctc: u16,
fast_counter: u8,
fc8: bool,
) -> Result<(), Self::Error>
fn on_tma_packet( &mut self, context: &DecoderContext, ctc: u16, fast_counter: u8, fc8: bool, ) -> Result<(), Self::Error>
Handle TMA packet Read more
Source§fn on_vmcs_packet(
&mut self,
context: &DecoderContext,
vmcs_pointer: u64,
) -> Result<(), Self::Error>
fn on_vmcs_packet( &mut self, context: &DecoderContext, vmcs_pointer: u64, ) -> Result<(), Self::Error>
Handle VMCS packet Read more
Source§fn on_psbend_packet(
&mut self,
context: &DecoderContext,
) -> Result<(), Self::Error>
fn on_psbend_packet( &mut self, context: &DecoderContext, ) -> Result<(), Self::Error>
Handle PSBEND packet
Source§fn on_trace_stop_packet(
&mut self,
context: &DecoderContext,
) -> Result<(), Self::Error>
fn on_trace_stop_packet( &mut self, context: &DecoderContext, ) -> Result<(), Self::Error>
Handle TraceStop packet
Source§fn on_pip_packet(
&mut self,
context: &DecoderContext,
cr3: u64,
rsvd_nr: bool,
) -> Result<(), Self::Error>
fn on_pip_packet( &mut self, context: &DecoderContext, cr3: u64, rsvd_nr: bool, ) -> Result<(), Self::Error>
Handle PIP packet Read more
Source§fn on_mnt_packet(
&mut self,
context: &DecoderContext,
payload: u64,
) -> Result<(), Self::Error>
fn on_mnt_packet( &mut self, context: &DecoderContext, payload: u64, ) -> Result<(), Self::Error>
Handle MNT packet Read more
Source§fn on_ptw_packet(
&mut self,
context: &DecoderContext,
ip_bit: bool,
payload: PtwPayload,
) -> Result<(), Self::Error>
fn on_ptw_packet( &mut self, context: &DecoderContext, ip_bit: bool, payload: PtwPayload, ) -> Result<(), Self::Error>
Handle PTW packet Read more
Source§fn on_exstop_packet(
&mut self,
context: &DecoderContext,
ip_bit: bool,
) -> Result<(), Self::Error>
fn on_exstop_packet( &mut self, context: &DecoderContext, ip_bit: bool, ) -> Result<(), Self::Error>
Handle EXSTOP packet Read more
Source§fn on_mwait_packet(
&mut self,
context: &DecoderContext,
mwait_hints: u8,
ext: u8,
) -> Result<(), Self::Error>
fn on_mwait_packet( &mut self, context: &DecoderContext, mwait_hints: u8, ext: u8, ) -> Result<(), Self::Error>
Handle MWAIT packet Read more
Source§fn on_pwre_packet(
&mut self,
context: &DecoderContext,
hw: bool,
resolved_thread_c_state: u8,
resolved_thread_sub_c_state: u8,
) -> Result<(), Self::Error>
fn on_pwre_packet( &mut self, context: &DecoderContext, hw: bool, resolved_thread_c_state: u8, resolved_thread_sub_c_state: u8, ) -> Result<(), Self::Error>
Handle PWRE packet Read more
Source§fn on_pwrx_packet(
&mut self,
context: &DecoderContext,
last_core_c_state: u8,
deepest_core_c_state: u8,
wake_reason: u8,
) -> Result<(), Self::Error>
fn on_pwrx_packet( &mut self, context: &DecoderContext, last_core_c_state: u8, deepest_core_c_state: u8, wake_reason: u8, ) -> Result<(), Self::Error>
Handle PWRX packet Read more
Source§fn on_evd_packet(
&mut self,
context: &DecoderContext,
type: u8,
payload: u64,
) -> Result<(), Self::Error>
fn on_evd_packet( &mut self, context: &DecoderContext, type: u8, payload: u64, ) -> Result<(), Self::Error>
Handle EVD packet Read more
Source§fn on_cfe_packet(
&mut self,
context: &DecoderContext,
ip_bit: bool,
type: u8,
vector: u8,
) -> Result<(), Self::Error>
fn on_cfe_packet( &mut self, context: &DecoderContext, ip_bit: bool, type: u8, vector: u8, ) -> Result<(), Self::Error>
Handle CFE packet Read more
Source§fn on_bbp_packet(
&mut self,
context: &DecoderContext,
sz_bit: bool,
type: u8,
) -> Result<(), Self::Error>
fn on_bbp_packet( &mut self, context: &DecoderContext, sz_bit: bool, type: u8, ) -> Result<(), Self::Error>
Handle BBP packet Read more
Source§fn on_bep_packet(
&mut self,
context: &DecoderContext,
ip_bit: bool,
) -> Result<(), Self::Error>
fn on_bep_packet( &mut self, context: &DecoderContext, ip_bit: bool, ) -> Result<(), Self::Error>
Handle BEP packet Read more
Auto Trait Implementations§
impl<H, R> Freeze for EdgeAnalyzer<H, R>
impl<H, R> RefUnwindSafe for EdgeAnalyzer<H, R>
impl<H, R> Send for EdgeAnalyzer<H, R>
impl<H, R> Sync for EdgeAnalyzer<H, R>
impl<H, R> Unpin for EdgeAnalyzer<H, R>
impl<H, R> UnwindSafe for EdgeAnalyzer<H, R>
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