移植sqlite3,并修复一些bug (#323)

* bugfix: 程序加载器映射内存时,计算要映射的大小不正确的问题。

* 修正brk系统调用不符合规范的地方

* bugfix: 修正fat文件系统未能正确的扩展文件大小的bug

* 增加fcntl系统调用

* 移植sqlite3
This commit is contained in:
LoGin
2023-08-08 23:39:22 +08:00
committed by GitHub
parent 26887c6334
commit 6d81180b3b
14 changed files with 562 additions and 30 deletions

View File

@ -93,7 +93,6 @@ impl ElfLoader {
) -> Result<(), ExecError> {
let start = self.elf_page_start(start);
let end = self.elf_page_align_up(end);
// kdebug!("set_elf_brk: start={:?}, end={:?}", start, end);
if end > start {
let r = user_vm_guard.map_anonymous(
start,
@ -177,9 +176,7 @@ impl ElfLoader {
let beginning_page_offset = self.elf_page_offset(addr_to_map);
addr_to_map = self.elf_page_start(addr_to_map);
// 计算要映射的内存的大小
let map_size = phent.p_filesz as usize
+ self.elf_page_offset(VirtAddr::new(phent.p_vaddr as usize))
+ beginning_page_offset;
let map_size = phent.p_filesz as usize + beginning_page_offset;
let map_size = self.elf_page_align_up(VirtAddr::new(map_size)).data();
// 当前段在文件中的大小
let seg_in_file_size = phent.p_filesz as usize;