From dcf232f378b36fad754799fc121a70cadc8d5cb3 Mon Sep 17 00:00:00 2001 From: LoGin Date: Sun, 14 Jan 2024 17:00:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BD=93=E6=89=BE=E4=B8=8D=E5=88=B0=E5=86=85?= =?UTF-8?q?=E6=A0=B8=E6=97=A5=E5=BF=97=E7=BC=93=E5=86=B2=E5=8C=BA=E7=9A=84?= =?UTF-8?q?=E6=97=B6=E5=80=99=EF=BC=8C=E9=87=8D=E8=AF=95=20(#491)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools/debugging/logmonitor/src/backend/mod.rs | 2 +- .../logmonitor/src/backend/monitor/mm.rs | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/tools/debugging/logmonitor/src/backend/mod.rs b/tools/debugging/logmonitor/src/backend/mod.rs index fb4609b5..928f9ea8 100644 --- a/tools/debugging/logmonitor/src/backend/mod.rs +++ b/tools/debugging/logmonitor/src/backend/mod.rs @@ -53,7 +53,7 @@ impl AppBackend { } #[derive(Debug)] -struct BackendData { +pub(crate) struct BackendData { kernel_metadata: Option, /// Path to the QEMU shm which contains the kernel memory. kmem_path: Option, diff --git a/tools/debugging/logmonitor/src/backend/monitor/mm.rs b/tools/debugging/logmonitor/src/backend/monitor/mm.rs index 48e7cad8..7da9b893 100644 --- a/tools/debugging/logmonitor/src/backend/monitor/mm.rs +++ b/tools/debugging/logmonitor/src/backend/monitor/mm.rs @@ -30,7 +30,7 @@ pub struct MMLogMonitor { } impl MMLogMonitor { - pub fn new(shared_data: Arc>) -> Arc { + pub(crate) fn new(shared_data: Arc>) -> Arc { let guard = shared_data.lock().unwrap(); let mm_log_buffer_symbol: Option = guard .kernel_metadata @@ -153,7 +153,20 @@ impl MMMonitorThread { pub fn run(&mut self) { info!("MMMonitorThread::run(): kmem_path: {:?}", self.kmem_path); - let mut kmem_file = self.open_kmem_file().expect("Failed to open kmem file."); + let mut kmem_file = { + let mut file: File; + loop { + let f = self.open_kmem_file(); + if f.is_ok() { + file = f.unwrap(); + break; + } else { + log::error!("Failed to open kmem file, error: {:?}", f.unwrap_err()); + std::thread::sleep(std::time::Duration::from_secs(1)); + } + } + file + }; info!("Channel header loaded!");