19个版本
0.3.2 | 2022年12月16日 |
---|---|
0.3.1 | 2022年12月10日 |
0.3.0-beta | 2022年11月15日 |
0.2.5 | 2022年3月30日 |
0.1.8 | 2022年2月6日 |
#8 in #frame-buffer
7.5MB
390 代码行
包含 (WOFF字体, 680KB) doc/NanumBarunGothic.ttf.woff, (WOFF字体, 400KB) doc/NanumBarunGothic.ttf.woff2, (WOFF字体, 190KB) doc/FiraSans-Medium.woff, (WOFF字体, 135KB) doc/FiraSans-Medium.woff2, (WOFF字体, 185KB) doc/FiraSans-Regular.woff, (WOFF字体, 130KB) doc/FiraSans-Regular.woff2 和 12 个更多.
一个独立的、#![no_std]
-友好的 Logger
包。基于引导加载程序包中内置的日志器设计,旨在用于操作系统内核。
要使用此包,请在您的内核的Cargo.toml
中将它指定为依赖项,然后初始化它。
初始化
为了使用日志器,需要对其进行初始化。为此,必须首先创建一个全局实例,可以使用类似conquer_once
的包。
pub static PRINTK: OnceCell<LockedPrintk> = OnceCell::uninit();
之后,需要将log
包附加到它。这需要以下3个步骤:
- 使用
get_or_init
方法从外部的OnceCell中解包LockedPrintk
对象。 - 使用
log::set_logger
告诉log
包要附加什么。 - 使用
log::set_max_level
告诉log
包你想要多少个日志级别。
以下是一个示例函数,演示了如何在纯Rust中完成这个过程。
pub fn printk_init(buffer: &'static mut [u8], info: FrameBufferInfo) {
let kernel_logger = printk::PRINTK.get_or_init(move || printk::LockedPrintk::new(buffer, info));
log::set_logger(kernel_logger).expect("logger already set");
log::set_max_level(log::LevelFilter::Trace);
log::info!("Hello, Kernel!");
}
贡献
如果您要添加任何功能,请随意创建一个pull request。我会很高兴测试并接受它。如果您有任何错误需要报告,GitHub就是为了这个。如果您是加利福尼亚州使命维尤地区的雇主,请随意在Indeed上联系我。我在那里设置了推送通知,所以您通过Indeed发送的任何消息都一定会被看到。