You've already forked Magisk
mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-09-06 06:36:58 +00:00
Rearchitect logging
This commit is contained in:
@@ -7,12 +7,6 @@ mod logging;
|
||||
pub mod ffi {
|
||||
extern "Rust" {
|
||||
fn rust_test_entry();
|
||||
}
|
||||
}
|
||||
|
||||
#[cxx::bridge(namespace = "rust")]
|
||||
pub mod ffi2 {
|
||||
extern "Rust" {
|
||||
fn android_logging();
|
||||
fn magisk_logging();
|
||||
fn zygisk_logging();
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
use std::fmt::Arguments;
|
||||
use base::*;
|
||||
use base::ffi::LogLevel;
|
||||
|
||||
#[allow(dead_code, non_camel_case_types)]
|
||||
#[repr(i32)]
|
||||
@@ -21,20 +22,34 @@ extern "C" {
|
||||
fn zygisk_log_write(prio: i32, msg: *const u8, len: i32);
|
||||
}
|
||||
|
||||
fn level_to_prio(level: LogLevel) -> i32 {
|
||||
match level {
|
||||
LogLevel::Error => ALogPriority::ANDROID_LOG_ERROR as i32,
|
||||
LogLevel::Warn => ALogPriority::ANDROID_LOG_WARN as i32,
|
||||
LogLevel::Info => ALogPriority::ANDROID_LOG_INFO as i32,
|
||||
LogLevel::Debug => ALogPriority::ANDROID_LOG_DEBUG as i32,
|
||||
_ => 0
|
||||
}
|
||||
}
|
||||
|
||||
pub fn android_logging() {
|
||||
fn android_log_impl(prio: i32, args: Arguments) {
|
||||
fn android_log_fmt(level: LogLevel, args: Arguments) {
|
||||
let mut buf: [u8; 4096] = [0; 4096];
|
||||
fmt_to_buf(&mut buf, args);
|
||||
unsafe {
|
||||
__android_log_write(prio, b"Magisk\0".as_ptr(), buf.as_ptr());
|
||||
__android_log_write(level_to_prio(level), b"Magisk\0".as_ptr(), buf.as_ptr());
|
||||
}
|
||||
}
|
||||
fn android_log_write(level: LogLevel, msg: &[u8]) {
|
||||
unsafe {
|
||||
__android_log_write(level_to_prio(level), b"Magisk\0".as_ptr(), msg.as_ptr());
|
||||
}
|
||||
}
|
||||
|
||||
let logger = Logger {
|
||||
d: |args| { android_log_impl(ALogPriority::ANDROID_LOG_DEBUG as i32, args) },
|
||||
i: |args| { android_log_impl(ALogPriority::ANDROID_LOG_INFO as i32, args) },
|
||||
w: |args| { android_log_impl(ALogPriority::ANDROID_LOG_WARN as i32, args) },
|
||||
e: |args| { android_log_impl(ALogPriority::ANDROID_LOG_ERROR as i32, args) }
|
||||
fmt: android_log_fmt,
|
||||
write: android_log_write,
|
||||
flags: 0,
|
||||
};
|
||||
exit_on_error(false);
|
||||
unsafe {
|
||||
@@ -43,20 +58,25 @@ pub fn android_logging() {
|
||||
}
|
||||
|
||||
pub fn magisk_logging() {
|
||||
fn magisk_log_impl(prio: i32, args: Arguments) {
|
||||
fn magisk_fmt(level: LogLevel, args: Arguments) {
|
||||
let mut buf: [u8; 4096] = [0; 4096];
|
||||
let len = fmt_to_buf(&mut buf, args);
|
||||
unsafe {
|
||||
__android_log_write(prio, b"Magisk\0".as_ptr(), buf.as_ptr());
|
||||
magisk_log_write(prio, buf.as_ptr(), len as i32);
|
||||
__android_log_write(level_to_prio(level), b"Magisk\0".as_ptr(), buf.as_ptr());
|
||||
magisk_log_write(level_to_prio(level), buf.as_ptr(), len as i32);
|
||||
}
|
||||
}
|
||||
fn magisk_write(level: LogLevel, msg: &[u8]) {
|
||||
unsafe {
|
||||
__android_log_write(level_to_prio(level), b"Magisk\0".as_ptr(), msg.as_ptr());
|
||||
magisk_log_write(level_to_prio(level), msg.as_ptr(), msg.len() as i32);
|
||||
}
|
||||
}
|
||||
|
||||
let logger = Logger {
|
||||
d: |args| { magisk_log_impl(ALogPriority::ANDROID_LOG_DEBUG as i32, args) },
|
||||
i: |args| { magisk_log_impl(ALogPriority::ANDROID_LOG_INFO as i32, args) },
|
||||
w: |args| { magisk_log_impl(ALogPriority::ANDROID_LOG_WARN as i32, args) },
|
||||
e: |args| { magisk_log_impl(ALogPriority::ANDROID_LOG_ERROR as i32, args) }
|
||||
fmt: magisk_fmt,
|
||||
write: magisk_write,
|
||||
flags: 0,
|
||||
};
|
||||
exit_on_error(false);
|
||||
unsafe {
|
||||
@@ -65,20 +85,25 @@ pub fn magisk_logging() {
|
||||
}
|
||||
|
||||
pub fn zygisk_logging() {
|
||||
fn zygisk_log_impl(prio: i32, args: Arguments) {
|
||||
fn zygisk_fmt(level: LogLevel, args: Arguments) {
|
||||
let mut buf: [u8; 4096] = [0; 4096];
|
||||
let len = fmt_to_buf(&mut buf, args);
|
||||
unsafe {
|
||||
__android_log_write(prio, b"Magisk\0".as_ptr(), buf.as_ptr());
|
||||
zygisk_log_write(prio, buf.as_ptr(), len as i32);
|
||||
__android_log_write(level_to_prio(level), b"Magisk\0".as_ptr(), buf.as_ptr());
|
||||
zygisk_log_write(level_to_prio(level), buf.as_ptr(), len as i32);
|
||||
}
|
||||
}
|
||||
fn zygisk_write(level: LogLevel, msg: &[u8]) {
|
||||
unsafe {
|
||||
__android_log_write(level_to_prio(level), b"Magisk\0".as_ptr(), msg.as_ptr());
|
||||
zygisk_log_write(level_to_prio(level), msg.as_ptr(), msg.len() as i32);
|
||||
}
|
||||
}
|
||||
|
||||
let logger = Logger {
|
||||
d: |args| { zygisk_log_impl(ALogPriority::ANDROID_LOG_DEBUG as i32, args) },
|
||||
i: |args| { zygisk_log_impl(ALogPriority::ANDROID_LOG_INFO as i32, args) },
|
||||
w: |args| { zygisk_log_impl(ALogPriority::ANDROID_LOG_WARN as i32, args) },
|
||||
e: |args| { zygisk_log_impl(ALogPriority::ANDROID_LOG_ERROR as i32, args) }
|
||||
fmt: zygisk_fmt,
|
||||
write: zygisk_write,
|
||||
flags: 0,
|
||||
};
|
||||
exit_on_error(false);
|
||||
unsafe {
|
||||
|
||||
Reference in New Issue
Block a user