Files
DragonOS/docs/locales/en/kernel/libs/unified-init.md
LoGin 880720250e doc: Add ai doc translate tool and add English doc. (#1168)
- add tools/doc_translator.py
- translated docs into English

Signed-off-by: longjin <longjin@DragonOS.org>
2025-05-20 10:44:28 +08:00

65 lines
1.6 KiB
Markdown

:::{note}
**AI Translation Notice**
This document was automatically translated by `Qwen/Qwen3-8B` model, for reference only.
- Source document: kernel/libs/unified-init.md
- Translation time: 2025-05-19 01:41:09
- Translation model: `Qwen/Qwen3-8B`
Please report issues via [Community Channel](https://github.com/DragonOS-Community/DragonOS/issues)
:::
# unified-init Unified Initialization Library
:::{note}
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>