From 98a2e623e21e412f4b2128988c97ba8815ffa6cf Mon Sep 17 00:00:00 2001 From: LI Qing Date: Thu, 9 May 2024 10:11:06 +0800 Subject: [PATCH] Avoid computation of log message arguments in syscall handler --- kernel/aster-nix/src/prelude.rs | 2 +- kernel/aster-nix/src/syscall/mod.rs | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/kernel/aster-nix/src/prelude.rs b/kernel/aster-nix/src/prelude.rs index d7ac12eed..0206faddb 100644 --- a/kernel/aster-nix/src/prelude.rs +++ b/kernel/aster-nix/src/prelude.rs @@ -19,7 +19,7 @@ pub(crate) use aster_frame::{ }; pub(crate) use bitflags::bitflags; pub(crate) use int_to_c_enum::TryFromInt; -pub(crate) use log::{debug, error, info, trace, warn}; +pub(crate) use log::{debug, error, info, log_enabled, trace, warn}; pub(crate) use pod::Pod; /// return current process diff --git a/kernel/aster-nix/src/syscall/mod.rs b/kernel/aster-nix/src/syscall/mod.rs index bf7456336..c429f6ce2 100644 --- a/kernel/aster-nix/src/syscall/mod.rs +++ b/kernel/aster-nix/src/syscall/mod.rs @@ -568,12 +568,14 @@ pub fn syscall_dispatch( #[macro_export] macro_rules! log_syscall_entry { ($syscall_name: tt) => { - let syscall_name_str = stringify!($syscall_name); - let pid = $crate::current!().pid(); - let tid = $crate::current_thread!().tid(); - info!( - "[pid={}][tid={}][id={}][{}]", - pid, tid, $syscall_name, syscall_name_str - ); + if log_enabled!(log::Level::Info) { + let syscall_name_str = stringify!($syscall_name); + let pid = $crate::current!().pid(); + let tid = $crate::current_thread!().tid(); + info!( + "[pid={}][tid={}][id={}][{}]", + pid, tid, $syscall_name, syscall_name_str + ); + } }; }