Prepare "/dev/shm" for POSIX shared memory

This commit is contained in:
Shaowei Song 2024-12-18 03:52:17 +00:00 committed by Tate, Hongliang Tian
parent 6e4a4c58d0
commit 00b194812d
2 changed files with 27 additions and 0 deletions

View File

@ -5,6 +5,7 @@ use cfg_if::cfg_if;
mod null;
mod pty;
mod random;
mod shm;
pub mod tty;
mod urandom;
mod zero;
@ -54,6 +55,7 @@ pub fn init() -> Result<()> {
let urandom = Arc::new(urandom::Urandom);
add_node(urandom, "urandom")?;
pty::init()?;
shm::init()?;
Ok(())
}

25
kernel/src/device/shm.rs Normal file
View File

@ -0,0 +1,25 @@
// SPDX-License-Identifier: MPL-2.0
use crate::{
fs::{
fs_resolver::{FsPath, FsResolver},
ramfs::RamFS,
utils::{InodeMode, InodeType},
},
prelude::*,
};
/// Initializes "/dev/shm" for POSIX shared memory usage.
pub fn init() -> Result<()> {
let dev_dentry = {
let fs = FsResolver::new();
fs.lookup(&FsPath::try_from("/dev")?)?
};
// Create the "shm" directory under "/dev" and mount a ramfs on it.
let shm_dentry =
dev_dentry.new_fs_child("shm", InodeType::Dir, InodeMode::from_bits_truncate(0o1777))?;
shm_dentry.mount(RamFS::new())?;
log::debug!("Mount RamFS at \"/dev/shm\"");
Ok(())
}