|
|
@ -1,4 +1,4 @@
|
|
|
|
use rcore_memory::memory_set::handler::{Delay, File};
|
|
|
|
use rcore_memory::memory_set::handler::{Delay, File, Linear};
|
|
|
|
use rcore_memory::memory_set::MemoryAttr;
|
|
|
|
use rcore_memory::memory_set::MemoryAttr;
|
|
|
|
use rcore_memory::paging::PageTable;
|
|
|
|
use rcore_memory::paging::PageTable;
|
|
|
|
use rcore_memory::Page;
|
|
|
|
use rcore_memory::Page;
|
|
|
@ -53,21 +53,41 @@ impl Syscall<'_> {
|
|
|
|
);
|
|
|
|
);
|
|
|
|
return Ok(addr);
|
|
|
|
return Ok(addr);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
let inode = proc.get_file(fd)?.inode();
|
|
|
|
|
|
|
|
self.vm().push(
|
|
|
|
let file = proc.get_file(fd)?;
|
|
|
|
addr,
|
|
|
|
info!("mmap path is {} ", &*file.path);
|
|
|
|
addr + len,
|
|
|
|
match &*file.path {
|
|
|
|
prot.to_attr(),
|
|
|
|
"/dev/fb0" => {
|
|
|
|
File {
|
|
|
|
self.vm().push(
|
|
|
|
file: INodeForMap(inode),
|
|
|
|
addr,
|
|
|
|
mem_start: addr,
|
|
|
|
addr + len,
|
|
|
|
file_start: offset,
|
|
|
|
prot.to_attr(),
|
|
|
|
file_end: offset + len,
|
|
|
|
Linear::new(
|
|
|
|
allocator: GlobalFrameAlloc,
|
|
|
|
( 0xfd00_0000 - addr ) as isize,
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
"mmap_file",
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
info!("mmap for /dev/fb0");
|
|
|
|
|
|
|
|
return Ok(addr);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
"mmap_file",
|
|
|
|
_ => {
|
|
|
|
);
|
|
|
|
let inode = file.inode();
|
|
|
|
return Ok(addr);
|
|
|
|
self.vm().push(
|
|
|
|
|
|
|
|
addr,
|
|
|
|
|
|
|
|
addr + len,
|
|
|
|
|
|
|
|
prot.to_attr(),
|
|
|
|
|
|
|
|
File {
|
|
|
|
|
|
|
|
file: INodeForMap(inode),
|
|
|
|
|
|
|
|
mem_start: addr,
|
|
|
|
|
|
|
|
file_start: offset,
|
|
|
|
|
|
|
|
file_end: offset + len,
|
|
|
|
|
|
|
|
allocator: GlobalFrameAlloc,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
"mmap_file",
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
return Ok(addr);
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|