Skip to content

Commit

Permalink
Merge pull request #90 from Lind-Project/feat-exec-exit-implementation
Browse files Browse the repository at this point in the history
Feat exec exit implementation
  • Loading branch information
rennergade authored Nov 26, 2024
2 parents 700ea92 + c191b56 commit 5f77427
Show file tree
Hide file tree
Showing 5 changed files with 712 additions and 2 deletions.
2 changes: 1 addition & 1 deletion src/safeposix/cage.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ pub struct Cage {
pub pendingsigset: interface::RustHashMap<u64, interface::RustAtomicU64>,
pub main_threadid: interface::RustAtomicU64,
pub interval_timer: interface::IntervalTimer,
pub vmmap: Vmmap,
pub vmmap: interface::RustLock<Vmmap>,
}

impl Cage {
Expand Down
2 changes: 2 additions & 0 deletions src/safeposix/dispatcher.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1097,6 +1097,7 @@ pub fn lindrustinit(verbosity: isize) {
pendingsigset: interface::RustHashMap::new(),
main_threadid: interface::RustAtomicU64::new(0),
interval_timer: interface::IntervalTimer::new(0),
vmmap: interface::RustLock::new(Vmmap::new()) // Initialize empty virtual memory map for new process
};

interface::cagetable_insert(0, utilcage);
Expand Down Expand Up @@ -1136,6 +1137,7 @@ pub fn lindrustinit(verbosity: isize) {
pendingsigset: interface::RustHashMap::new(),
main_threadid: interface::RustAtomicU64::new(0),
interval_timer: interface::IntervalTimer::new(1),
vmmap: interface::RustLock::new(Vmmap::new()) // Initialize empty virtual memory map for new process
};
interface::cagetable_insert(1, initcage);
fdtables::init_empty_cage(1);
Expand Down
9 changes: 8 additions & 1 deletion src/safeposix/syscalls/fs_calls.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,14 @@ use std::ptr;
use std::mem;

use crate::fdtables;

use crate::safeposix::cage::Cage;
use libc::{
PROT_READ, PROT_WRITE, // Memory protection flags
O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_TRUNC, // File open flags
MAP_SHARED, MAP_PRIVATE, // Memory mapping flags
SEEK_SET, SEEK_CUR, SEEK_END, // Seek constants
S_IRWXU, S_IRWXG, S_IRWXO, // Permission flags (user, group, others)
};
static LIND_ROOT: &str = "/home/lind/lind_project/src/safeposix-rust/tmp";

const FDKIND_KERNEL: u32 = 0;
Expand Down
2 changes: 2 additions & 0 deletions src/safeposix/syscalls/sys_calls.rs
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,7 @@ impl Cage {
pendingsigset: interface::RustHashMap::new(),
main_threadid: interface::RustAtomicU64::new(0),
interval_timer: interface::IntervalTimer::new(child_cageid),
vmmap: interface::RustLock::new(Vmmap::new()) // Initialize empty virtual memory map for new process
};

let shmtable = &SHM_METADATA.shmtable;
Expand Down Expand Up @@ -241,6 +242,7 @@ impl Cage {
pendingsigset: interface::RustHashMap::new(),
main_threadid: interface::RustAtomicU64::new(0),
interval_timer: self.interval_timer.clone_with_new_cageid(child_cageid),
vmmap: interface::RustLock::new(Vmmap::new()) // Fresh clean vmmap
};
//wasteful clone of fdtable, but mutability constraints exist

Expand Down
Loading

0 comments on commit 5f77427

Please sign in to comment.