1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
//! A pure-Rust library to work with Linux memfd and seals.
//!
//! It provides support for creating `memfd` objects on Linux
//! and handling seals on them. This was first introduced in
//! Linux kernel 3.17.
//! For further details, see `memfd_create(2)` manpage.
//!
//! ```rust
//! use memfd;
//!
//! fn new_sized_memfd() -> Result<memfd::Memfd, Box<dyn std::error::Error>> {
//! // Create a sealable memfd.
//! let opts = memfd::MemfdOptions::default().allow_sealing(true);
//! let mfd = opts.create("sized-1K")?;
//!
//! // Resize to 1024B.
//! mfd.as_file().set_len(1024)?;
//!
//! // Add seals to prevent further resizing.
//! mfd.add_seals(&[
//! memfd::FileSeal::SealShrink,
//! memfd::FileSeal::SealGrow
//! ])?;
//!
//! // Prevent further sealing changes.
//! mfd.add_seal(memfd::FileSeal::SealSeal)?;
//!
//! Ok(mfd)
//! }
//! ```
// No-op crate on platforms that do not support memfd_create, instead of failing to link, or at
// runtime.
pub use crate::;