erase remote ID if name is overwritten

pull/225/head
mwojcik 2023-03-27 14:55:12 +08:00
parent 7bd5413fbe
commit ca51cf7729
2 changed files with 13 additions and 4 deletions

View File

@ -323,7 +323,7 @@ async fn handle_run_kernel(
.await;
}
kernel::Message::DmaPutRequest(recorder) => {
let _id = rtio_dma::put_record(recorder);
let _id = rtio_dma::put_record(aux_mutex, routing_table, timer, recorder).await;
#[cfg(has_drtio)]
rtio_dma::remote_dma::upload_traces(aux_mutex, routing_table, timer, _id).await;
}

View File

@ -293,7 +293,11 @@ pub mod remote_dma {
}
pub fn put_record(mut recorder: DmaRecorder) -> u32 {
pub async fn put_record(_aux_mutex: &Rc<Mutex<bool>>,
_routing_table: &RoutingTable,
_timer: GlobalTimer,
mut recorder: DmaRecorder,
) -> u32 {
#[cfg(has_drtio)]
let mut remote_traces: BTreeMap<u8, Vec<u8>> = BTreeMap::new();
@ -338,12 +342,17 @@ pub fn put_record(mut recorder: DmaRecorder) -> u32 {
let ptr = recorder.buffer[padding..].as_ptr() as u32;
DMA_RECORD_STORE
let _old_record = DMA_RECORD_STORE
.lock()
.insert(recorder.name, (ptr, recorder.buffer, recorder.duration));
#[cfg(has_drtio)]
remote_dma::add_traces(ptr, remote_traces);
{
if let Some((old_id, _v, _d)) = _old_record {
remote_dma::erase(_aux_mutex, _routing_table, _timer, old_id).await;
}
remote_dma::add_traces(ptr, remote_traces);
}
ptr
}