2个版本
0.1.1 | 2022年10月12日 |
---|---|
0.1.0 | 2022年7月3日 |
#1057 in 硬件支持
10KB
141 行
纯 Rust 编写的 mkswap
在 Rust 中初始化交换设备或文件。
例如
```rust
use std::io::Cursor;
use mkswap::SwapWriter;
let mut buffer: Cursor<Vec<u8>> = Cursor::new(vec![0; 40 * 1024]);
let size = SwapWriter::new()
.label("🔀".into())
.unwrap()
.write(&mut buffer)
.unwrap();
lib.rs
:
在纯 Rust 中创建交换文件和设备。
此库将构建以下头部,来自 Linux 内核的副本
// Note that this code snippet is licensed GPL-2.0, matching include/linux/swap.h in the Linux Kernel.
union swap_header {
struct {
char reserved[PAGE_SIZE - 10];
char magic[10]; /* SWAP-SPACE or SWAPSPACE2 */
} magic;
struct {
char bootbits[1024]; /* Space for disklabel etc. */
__u32 version;
__u32 last_page;
__u32 nr_badpages;
unsigned char sws_uuid[16];
unsigned char sws_volume[16];
__u32 padding[117];
__u32 badpages[1];
} info;
};
use std::io::Cursor;
use mkswap::SwapWriter;
let mut buffer: Cursor<Vec<u8>> = Cursor::new(vec![0; 40 * 1024]);
let size = SwapWriter::new()
.label("🔀".into())
.unwrap()
.write(&mut buffer)
.unwrap();
注意
此库将在文件中搜索,包括回到位置 0。如果这不是期望的,请考虑使用 fscommon::StreamSlice 或发送 pull request。
依赖项
~0.5–1.2MB
~23K SLoC