optimize trace_reads
This commit is contained in:
parent
083adc7e38
commit
a99f206e7a
@ -12,7 +12,7 @@ use super::{
|
||||
};
|
||||
|
||||
pub mod qemu_module {
|
||||
use std::borrow::Cow;
|
||||
use std::{borrow::Cow, cmp::min};
|
||||
use std::ops::Range;
|
||||
|
||||
use freertos::FreeRTOSTraceMetadata;
|
||||
@ -500,19 +500,16 @@ pub fn trace_reads<QT, S>(
|
||||
S: UsesInput,
|
||||
QT: EmulatorModuleTuple<S>,
|
||||
{
|
||||
if size == 0 {
|
||||
if unsafe{!INPUT_MEM.contains(&addr)} || size == 0 {
|
||||
return;
|
||||
}
|
||||
let input_mem = unsafe { (&raw const INPUT_MEM).as_ref().unwrap() };
|
||||
let mut buf = vec![0u8; size];
|
||||
let mut buf = vec![0u8; min(size, (unsafe{INPUT_MEM.end} - addr) as usize)];
|
||||
let emulator = hooks.qemu();
|
||||
unsafe {
|
||||
emulator.read_mem(addr, &mut buf);
|
||||
for (i, &byte) in buf.iter().enumerate() {
|
||||
let curr_addr = addr.wrapping_add(i as GuestAddr);
|
||||
if input_mem.contains(&curr_addr) {
|
||||
(&raw mut MEM_READ).as_mut().unwrap().push((curr_addr, byte));
|
||||
}
|
||||
(&raw mut MEM_READ).as_mut().unwrap().push((curr_addr, byte));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user