1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
use alloc::arc::Arc; use arch::mmu::AddressSpace; use phys_mem::PhysicalBitmap; use syscall::Result; pub struct ArchProcess { address_space: AddressSpace } impl ArchProcess { pub fn new(bitmap: Arc<PhysicalBitmap>) -> Result<ArchProcess> { Ok(ArchProcess { address_space: try!(AddressSpace::new(bitmap)) }) } pub unsafe fn switch(&self) { self.address_space.switch() } pub unsafe fn map<T>(&self, ptr: *const T, addr: usize, user: bool, writable: bool) -> Result<()> { self.address_space.map(ptr, addr, user, writable) } }