起動時に測定した物理メモリサイズをグローバル変数に格納するようにした
空きメモリの容量を取得できるようにした
@@ -120,12 +120,11 @@ | ||
120 | 120 | IDT::Init(); |
121 | 121 | |
122 | 122 | // メモリ容量の取得 |
123 | - uint32_t memsize; | |
124 | - memsize = GetPhysicalMemoryCapacity(0x01200000, 0xc0000000); | |
123 | + physicalMemorySize = GetPhysicalMemoryCapacity(0x01200000, 0xc0000000); | |
125 | 124 | |
126 | 125 | // メモリ管理情報は0x00300000 - 0x003c0000 (768KB) |
127 | 126 | //memman.Init(0x01200000, memsize, (MemInfo*)0x00300000); |
128 | - memman.Init(0x01200000, memsize - 0x01200000); | |
127 | + memman.Init(0x01200000, physicalMemorySize - 0x01200000); | |
129 | 128 | |
130 | 129 | // メッセージキュー |
131 | 130 | Queue<Message> queueMain(128); |
@@ -223,7 +222,7 @@ | ||
223 | 222 | // タスクスケジューリング開始 |
224 | 223 | taskman->StartScheduling(); |
225 | 224 | |
226 | - Debug::WriteLine("mem = %d MB", memsize >> 20); | |
225 | + Debug::WriteLine("mem = %d MB", physicalMemorySize >> 20); | |
227 | 226 | |
228 | 227 | /* |
229 | 228 | for (int i = 0; i <= shtman->top; i++) { |
@@ -439,6 +439,17 @@ | ||
439 | 439 | } |
440 | 440 | } |
441 | 441 | |
442 | +uint32_t MemoryManager::GetFreeSize() | |
443 | +{ | |
444 | + MemInfo* mi = freeBegin; | |
445 | + uint32_t sum = 0; | |
446 | + while (mi != 0) { | |
447 | + sum += mi->size; | |
448 | + mi = mi->next; | |
449 | + } | |
450 | + return sum; | |
451 | +} | |
452 | + | |
442 | 453 | uint32_t MemoryManager::Floor(uint32_t value) |
443 | 454 | { |
444 | 455 | // 切捨て |
@@ -551,4 +562,5 @@ | ||
551 | 562 | return s1; |
552 | 563 | } |
553 | 564 | |
565 | +uint32_t physicalMemorySize; | |
554 | 566 |
@@ -122,6 +122,9 @@ | ||
122 | 122 | // メモリ開放 |
123 | 123 | void Free(void* ptr); |
124 | 124 | |
125 | + // 空き領域取得 | |
126 | + uint32_t GetFreeSize(); | |
127 | + | |
125 | 128 | private: |
126 | 129 | // Alignmentの切り上げ |
127 | 130 | uint32_t Floor(uint32_t value); |
@@ -140,4 +143,6 @@ | ||
140 | 143 | |
141 | 144 | extern MemoryManager memman; |
142 | 145 | |
146 | +extern uint32_t physicalMemorySize; | |
147 | + | |
143 | 148 | #endif /* MEMORY_H_ */ |