static GLOBAL_LOG_BUFFER: GlobalLogBufferExpand description
全局日志缓冲区实例
我们不需要锁 (如 Mutex) 或延迟初始化 (如 OnceCell),因为:
1. 不需要 Mutex (锁): GlobalLogBuffer 本身是线程安全的。
它使用 AtomicUsize 字段以内部可变性设计。
由于其所有方法 (write, read) 都对共享引用 (&self) 操作,
并且所有内部修改都通过原子操作安全处理,因此整个
结构体是 Sync。我们不需要将一个已经线程安全的
类型封装在另一个锁中。
2. 不需要 Lazy 或 OnceCell: GlobalLogBuffer::new()
函数是一个 const fn。这意味着它在编译时执行,
而不是在运行时执行。整个、完全初始化的 GlobalLogBuffer
实例在内核编译时被直接烘焙到内核的数据段 (.data 或 .bss) 中。
因此,没有运行时初始化步骤,也就不存在 Lazy 旨在解决的
“首次初始化“竞态条件。缓冲区从第一条 CPU 指令开始,
就已完全初始化并存在于内存中。
这种模式产生了零开销、锁无关且无数据竞争的 全局静态实例。