Reduce cpp logging overhead

This commit is contained in:
topjohnwu 2023-05-09 19:14:08 -07:00
parent 7518092ad2
commit 583ffc8177
4 changed files with 5 additions and 5 deletions

View File

@ -25,7 +25,7 @@ pub mod ffi {
} }
extern "Rust" { extern "Rust" {
fn log_with_rs(level: LogLevel, msg: &str); fn log_with_rs(level: LogLevel, msg: &[u8]);
fn exit_on_error(b: bool); fn exit_on_error(b: bool);
fn set_log_level_state(level: LogLevel, enabled: bool); fn set_log_level_state(level: LogLevel, enabled: bool);
fn cmdline_logging(); fn cmdline_logging();

View File

@ -14,7 +14,7 @@ using namespace std;
static int fmt_and_log_with_rs(LogLevel level, const char *fmt, va_list ap) { static int fmt_and_log_with_rs(LogLevel level, const char *fmt, va_list ap) {
char buf[4096]; char buf[4096];
int ret = vssprintf(buf, sizeof(buf), fmt, ap); int ret = vssprintf(buf, sizeof(buf), fmt, ap);
log_with_rs(level, rust::Str(buf, ret)); log_with_rs(level, rust::Slice(reinterpret_cast<const uint8_t *>(buf), ret));
return ret; return ret;
} }

View File

@ -62,12 +62,12 @@ pub fn set_log_level_state(level: LogLevel, enabled: bool) {
} }
} }
pub fn log_with_rs(level: LogLevel, msg: &str) { pub fn log_with_rs(level: LogLevel, msg: &[u8]) {
let logger = unsafe { LOGGER }; let logger = unsafe { LOGGER };
if (logger.flags & level.to_disable_flag()) != 0 { if (logger.flags & level.to_disable_flag()) != 0 {
return; return;
} }
(logger.write)(level, msg.as_bytes()); (logger.write)(level, msg);
if level == LogLevel::Error && (logger.flags & LogFlag::ExitOnError) != 0 { if level == LogLevel::Error && (logger.flags & LogFlag::ExitOnError) != 0 {
exit(1); exit(1);
} }

View File

@ -219,7 +219,7 @@ fn zygisk_log_write(prio: i32, msg: &[u8]) {
// Consume SIGPIPE if exists, then restore mask // Consume SIGPIPE if exists, then restore mask
unsafe { unsafe {
let mut ts: timespec = std::mem::zeroed(); let ts: timespec = std::mem::zeroed();
sigtimedwait(&mask, null_mut(), &ts); sigtimedwait(&mask, null_mut(), &ts);
pthread_sigmask(SIG_SETMASK, &orig_mask, null_mut()); pthread_sigmask(SIG_SETMASK, &orig_mask, null_mut());
} }