瀏覽代碼

Add a "count" field to struct memory_map.

tags/v0.9.3
Michael Brown 18 年之前
父節點
當前提交
e4f8d6eed7
共有 2 個檔案被更改,包括 11 行新增6 行删除
  1. 8
    6
      src/arch/i386/firmware/pcbios/memmap.c
  2. 3
    0
      src/arch/i386/include/memmap.h

+ 8
- 6
src/arch/i386/firmware/pcbios/memmap.c 查看文件

@@ -138,7 +138,7 @@ static unsigned int extmemsize ( void ) {
138 138
  * @ret rc		Return status code
139 139
  */
140 140
 static int meme820 ( struct memory_map *memmap ) {
141
-	unsigned int index = 0;
141
+	struct memory_region *region = memmap->regions;
142 142
 	uint32_t next = 0;
143 143
 	uint32_t smap;
144 144
 	unsigned int flags;
@@ -169,12 +169,13 @@ static int meme820 ( struct memory_map *memmap ) {
169 169
 		if ( e820buf.type != E820_TYPE_RAM )
170 170
 			continue;
171 171
 
172
-		memmap->regions[index].start = e820buf.start;
173
-		memmap->regions[index].end = e820buf.start + e820buf.len;
174
-		index++;
172
+		region->start = e820buf.start;
173
+		region->end = e820buf.start + e820buf.len;
174
+		region++;
175
+		memmap->count++;
175 176
 	} while ( ( next != 0 ) && 
176
-		  ( index < ( sizeof ( memmap->regions ) /
177
-			      sizeof ( memmap->regions[0] ) ) ) );
177
+		  ( memmap->count < ( sizeof ( memmap->regions ) /
178
+				      sizeof ( memmap->regions[0] ) ) ) );
178 179
 	return 0;
179 180
 }
180 181
 
@@ -202,4 +203,5 @@ void get_memmap ( struct memory_map *memmap ) {
202 203
 	memmap->regions[0].end = ( basemem * 1024 );
203 204
 	memmap->regions[1].start = 0x100000;
204 205
 	memmap->regions[1].end = 0x100000 + ( extmem * 1024 );
206
+	memmap->count = 2;
205 207
 }

+ 3
- 0
src/arch/i386/include/memmap.h 查看文件

@@ -23,7 +23,10 @@ struct memory_region {
23 23
 
24 24
 /** A memory map */
25 25
 struct memory_map {
26
+	/** Memory regions */
26 27
 	struct memory_region regions[MAX_MEMORY_REGIONS];
28
+	/** Number of used regions */
29
+	unsigned int count;
27 30
 };
28 31
 
29 32
 extern void get_memmap ( struct memory_map *memmap );

Loading…
取消
儲存