Browse Source

解决relibc的头文件没能识别__dragonos__定义的问题 (#315)

LoGin 1 year ago
parent
commit
1a62e7767c

+ 2 - 1
.vscode/settings.json

@@ -175,7 +175,8 @@
         "net.h": "c",
         "lz4.h": "c",
         "cmd_test.h": "c",
-        "cmpxchg.h": "c"
+        "cmpxchg.h": "c",
+        "mman.h": "c"
     },
     "C_Cpp.errorSquiggles": "enabled",
     "esbonio.sphinx.confDir": "",

+ 3 - 1
kernel/src/mm/ucontext.rs

@@ -842,6 +842,8 @@ impl LockedVMA {
     }
 
     pub fn unmap(&self, mapper: &mut PageMapper, mut flusher: impl Flusher<MMArch>) {
+        // todo: 如果当前vma与文件相关,完善文件相关的逻辑
+
         let mut guard = self.lock();
         assert!(guard.mapped);
         for page in guard.region.pages() {
@@ -1116,7 +1118,7 @@ impl VMA {
         // kdebug!("VMA::zeroed: flusher dropped");
 
         // 清空这些内存
-        let virt_iter = VirtPageFrameIter::new(destination, destination.add(page_count));
+        let virt_iter: VirtPageFrameIter = VirtPageFrameIter::new(destination, destination.add(page_count));
         for frame in virt_iter {
             let paddr = mapper.translate(frame.virt_address()).unwrap().0;
 

+ 1 - 1
user/apps/http_server/Makefile

@@ -3,7 +3,7 @@ LD=ld
 OBJCOPY=objcopy
 # 修改这里,把它改为你的relibc的sysroot路径
 RELIBC_OPT=$(DADK_BUILD_CACHE_DIR_RELIBC_0_1_0)
-CFLAGS=-I $(RELIBC_OPT)/include
+CFLAGS=-I $(RELIBC_OPT)/include -D__dragonos__
 
 tmp_output_dir=$(ROOT_PATH)/bin/tmp/user
 output_dir=$(DADK_BUILD_CACHE_DIR_HTTP_SERVER_0_1_0)

+ 2 - 2
user/apps/test_bind/Makefile

@@ -3,10 +3,10 @@ LD=ld
 OBJCOPY=objcopy
 # 修改这里,把它改为你的relibc的sysroot路径
 RELIBC_OPT=$(DADK_BUILD_CACHE_DIR_RELIBC_0_1_0)
-CFLAGS=-I $(RELIBC_OPT)/include
+CFLAGS=-I $(RELIBC_OPT)/include -D__dragonos__
 
 tmp_output_dir=$(ROOT_PATH)/bin/tmp/user
-output_dir=$(DADK_BUILD_CACHE_DIR_HTTP_SERVER_0_1_0)
+output_dir=$(DADK_BUILD_CACHE_DIR_TEST_BIND_0_1_0)
 
 LIBC_OBJS:=$(shell find $(RELIBC_OPT)/lib -name "*.o" | sort )
 LIBC_OBJS+=$(RELIBC_OPT)/lib/libc.a

+ 1 - 1
user/apps/test_gettimeofday/Makefile

@@ -3,7 +3,7 @@ LD=ld
 OBJCOPY=objcopy
 # 修改这里,把它改为你的relibc的sysroot路径
 RELIBC_OPT=$(DADK_BUILD_CACHE_DIR_RELIBC_0_1_0)
-CFLAGS=-I $(RELIBC_OPT)/include
+CFLAGS=-I $(RELIBC_OPT)/include -D__dragonos__
 
 tmp_output_dir=$(ROOT_PATH)/bin/tmp/user
 output_dir=$(DADK_BUILD_CACHE_DIR_TEST_GETTIMEOFDAY_0_1_0)

+ 1 - 1
user/apps/test_relibc/Makefile

@@ -3,7 +3,7 @@ LD=ld
 OBJCOPY=objcopy
 # 修改这里,把它改为你的relibc的sysroot路径
 RELIBC_OPT=$(DADK_BUILD_CACHE_DIR_RELIBC_0_1_0)
-CFLAGS=-I $(RELIBC_OPT)/include
+CFLAGS=-I $(RELIBC_OPT)/include -D__dragonos__
 
 tmp_output_dir=$(ROOT_PATH)/bin/tmp/user
 output_dir=$(DADK_BUILD_CACHE_DIR_TEST_RELIBC_0_1_0)