Skip to content

unified-init Unified Initialization Library

Author

Longjin <longjin@DragonOS.org>

December 25, 2023

1. Introduction

This library is located in kernel/crates/unified-init. It provides unified initialization macros to register functions into a unified initialization list. It facilitates unified initialization.

It is important to note that the array of initializers is no_mangle, so its naming should follow the rules of 模块_初始化器 to prevent naming conflicts that could lead to unexpected errors.

2. Usage

rust
use system_error::SystemError;
use unified_init::define_unified_initializer_slice;
use unified_init_macros::unified_init;

/// 初始化函数都将会被放到这个列表中
define_unified_initializer_slice!(INITIALIZER_LIST);

#[unified_init(INITIALIZER_LIST)]
fn init1() -> Result<(), SystemError> {
   Ok(())
}

#[unified_init(INITIALIZER_LIST)]
fn init2() -> Result<(), SystemError> {
   Ok(())
}

fn main() {
    assert_eq!(INITIALIZER_LIST.len(), 2);
}

3. Development

When testing, you can write test code in main.rs, and then run cargo expand --bin unified-init-expand in the current directory to see the code after the proc macro has been expanded.

4. Maintainer

Longjin <longjin@DragonOS.org>