mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	MemoryState: Add additional memory states and improve naming.
This commit is contained in:
		
							parent
							
								
									07ae1f972d
								
							
						
					
					
						commit
						8be7131033
					
				| @ -153,9 +153,9 @@ void Process::LoadModule(SharedPtr<CodeSet> module_, VAddr base_addr) { | |||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     // Map CodeSet segments
 |     // Map CodeSet segments
 | ||||||
|     MapSegment(module_->code, VMAPermission::ReadExecute, MemoryState::Code); |     MapSegment(module_->code, VMAPermission::ReadExecute, MemoryState::CodeStatic); | ||||||
|     MapSegment(module_->rodata, VMAPermission::Read, MemoryState::Static); |     MapSegment(module_->rodata, VMAPermission::Read, MemoryState::CodeMutable); | ||||||
|     MapSegment(module_->data, VMAPermission::ReadWrite, MemoryState::Static); |     MapSegment(module_->data, VMAPermission::ReadWrite, MemoryState::CodeMutable); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| VAddr Process::GetLinearHeapAreaAddress() const { | VAddr Process::GetLinearHeapAreaAddress() const { | ||||||
|  | |||||||
| @ -468,7 +468,7 @@ static ResultCode QueryProcessMemory(MemoryInfo* memory_info, PageInfo* /*page_i | |||||||
|         memory_info->base_address = 0; |         memory_info->base_address = 0; | ||||||
|         memory_info->permission = static_cast<u32>(VMAPermission::None); |         memory_info->permission = static_cast<u32>(VMAPermission::None); | ||||||
|         memory_info->size = 0; |         memory_info->size = 0; | ||||||
|         memory_info->type = static_cast<u32>(MemoryState::Free); |         memory_info->type = static_cast<u32>(MemoryState::Unmapped); | ||||||
|     } else { |     } else { | ||||||
|         memory_info->base_address = vma->second.base; |         memory_info->base_address = vma->second.base; | ||||||
|         memory_info->permission = static_cast<u32>(vma->second.permissions); |         memory_info->permission = static_cast<u32>(vma->second.permissions); | ||||||
|  | |||||||
| @ -314,7 +314,7 @@ ResultVal<SharedPtr<Thread>> Thread::Create(std::string name, VAddr entry_point, | |||||||
|         // TODO(Subv): Find the correct MemoryState for this region.
 |         // TODO(Subv): Find the correct MemoryState for this region.
 | ||||||
|         vm_manager.MapMemoryBlock(Memory::TLS_AREA_VADDR + available_page * Memory::PAGE_SIZE, |         vm_manager.MapMemoryBlock(Memory::TLS_AREA_VADDR + available_page * Memory::PAGE_SIZE, | ||||||
|                                   linheap_memory, offset, Memory::PAGE_SIZE, |                                   linheap_memory, offset, Memory::PAGE_SIZE, | ||||||
|                                   MemoryState::ThreadLocalStorage); |                                   MemoryState::ThreadLocal); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // Mark the slot as used
 |     // Mark the slot as used
 | ||||||
|  | |||||||
| @ -18,8 +18,26 @@ namespace Kernel { | |||||||
| 
 | 
 | ||||||
| static const char* GetMemoryStateName(MemoryState state) { | static const char* GetMemoryStateName(MemoryState state) { | ||||||
|     static const char* names[] = { |     static const char* names[] = { | ||||||
|         "Free",   "Reserved",   "IO",      "Static", "Code",      "Private", |         "Unmapped", | ||||||
|         "Shared", "Continuous", "Aliased", "Alias",  "AliasCode", "Locked", |         "Io", | ||||||
|  |         "Normal", | ||||||
|  |         "CodeStatic", | ||||||
|  |         "CodeMutable", | ||||||
|  |         "Heap", | ||||||
|  |         "Shared", | ||||||
|  |         "Unknown1" | ||||||
|  |         "ModuleCodeStatic", | ||||||
|  |         "ModuleCodeMutable", | ||||||
|  |         "IpcBuffer0", | ||||||
|  |         "Mapped", | ||||||
|  |         "ThreadLocal", | ||||||
|  |         "TransferMemoryIsolated", | ||||||
|  |         "TransferMemory", | ||||||
|  |         "ProcessMemory", | ||||||
|  |         "Unknown2" | ||||||
|  |         "IpcBuffer1", | ||||||
|  |         "IpcBuffer3", | ||||||
|  |         "KernelStack", | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     return names[(int)state]; |     return names[(int)state]; | ||||||
| @ -142,7 +160,7 @@ VMManager::VMAIter VMManager::Unmap(VMAIter vma_handle) { | |||||||
|     VirtualMemoryArea& vma = vma_handle->second; |     VirtualMemoryArea& vma = vma_handle->second; | ||||||
|     vma.type = VMAType::Free; |     vma.type = VMAType::Free; | ||||||
|     vma.permissions = VMAPermission::None; |     vma.permissions = VMAPermission::None; | ||||||
|     vma.meminfo_state = MemoryState::Free; |     vma.meminfo_state = MemoryState::Unmapped; | ||||||
| 
 | 
 | ||||||
|     vma.backing_block = nullptr; |     vma.backing_block = nullptr; | ||||||
|     vma.offset = 0; |     vma.offset = 0; | ||||||
|  | |||||||
| @ -41,15 +41,24 @@ enum class VMAPermission : u8 { | |||||||
| 
 | 
 | ||||||
| /// Set of values returned in MemoryInfo.state by svcQueryMemory.
 | /// Set of values returned in MemoryInfo.state by svcQueryMemory.
 | ||||||
| enum class MemoryState : u32 { | enum class MemoryState : u32 { | ||||||
|     Free = 0, |     Unmapped = 0x0, | ||||||
|     IO = 1, |     Io = 0x1, | ||||||
|     Normal = 2, |     Normal = 0x2, | ||||||
|     Code = 3, |     CodeStatic = 0x3, | ||||||
|     Static = 4, |     CodeMutable = 0x4, | ||||||
|     Heap = 5, |     Heap = 0x5, | ||||||
|     Shared = 6, |     Shared = 0x6, | ||||||
|     Mapped = 6, |     ModuleCodeStatic = 0x8, | ||||||
|     ThreadLocalStorage = 12, |     ModuleCodeMutable = 0x9, | ||||||
|  |     IpcBuffer0 = 0xA, | ||||||
|  |     Mapped = 0xB, | ||||||
|  |     ThreadLocal = 0xC, | ||||||
|  |     TransferMemoryIsolated = 0xD, | ||||||
|  |     TransferMemory = 0xE, | ||||||
|  |     ProcessMemory = 0xF, | ||||||
|  |     IpcBuffer1 = 0x11, | ||||||
|  |     IpcBuffer3 = 0x12, | ||||||
|  |     KernelStack = 0x13, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
| @ -66,7 +75,7 @@ struct VirtualMemoryArea { | |||||||
|     VMAType type = VMAType::Free; |     VMAType type = VMAType::Free; | ||||||
|     VMAPermission permissions = VMAPermission::None; |     VMAPermission permissions = VMAPermission::None; | ||||||
|     /// Tag returned by svcQueryMemory. Not otherwise used.
 |     /// Tag returned by svcQueryMemory. Not otherwise used.
 | ||||||
|     MemoryState meminfo_state = MemoryState::Free; |     MemoryState meminfo_state = MemoryState::Unmapped; | ||||||
| 
 | 
 | ||||||
|     // Settings for type = AllocatedMemoryBlock
 |     // Settings for type = AllocatedMemoryBlock
 | ||||||
|     /// Memory block backing this VMA.
 |     /// Memory block backing this VMA.
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 bunnei
						bunnei