mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 05:40:04 +00:00 
			
		
		
		
	VMManager: Make LogLayout log level configurable as a parameter
This commit is contained in:
		
							parent
							
								
									785407d06f
								
							
						
					
					
						commit
						b9a9ad9742
					
				
					 4 changed files with 22 additions and 13 deletions
				
			
		|  | @ -91,17 +91,16 @@ void LogMessage(Class log_class, Level log_level, | |||
| } // namespace Log
 | ||||
| 
 | ||||
| #define LOG_GENERIC(log_class, log_level, ...) \ | ||||
|     ::Log::LogMessage(::Log::Class::log_class, ::Log::Level::log_level, \ | ||||
|         __FILE__, __LINE__, __func__, __VA_ARGS__) | ||||
|     ::Log::LogMessage(log_class, log_level, __FILE__, __LINE__, __func__, __VA_ARGS__) | ||||
| 
 | ||||
| #ifdef _DEBUG | ||||
| #define LOG_TRACE(   log_class, ...) LOG_GENERIC(log_class, Trace,    __VA_ARGS__) | ||||
| #define LOG_TRACE(   log_class, ...) LOG_GENERIC(::Log::Class::log_class, ::Log::Level::Trace,    __VA_ARGS__) | ||||
| #else | ||||
| #define LOG_TRACE(   log_class, ...) (void(0)) | ||||
| #endif | ||||
| 
 | ||||
| #define LOG_DEBUG(   log_class, ...) LOG_GENERIC(log_class, Debug,    __VA_ARGS__) | ||||
| #define LOG_INFO(    log_class, ...) LOG_GENERIC(log_class, Info,     __VA_ARGS__) | ||||
| #define LOG_WARNING( log_class, ...) LOG_GENERIC(log_class, Warning,  __VA_ARGS__) | ||||
| #define LOG_ERROR(   log_class, ...) LOG_GENERIC(log_class, Error,    __VA_ARGS__) | ||||
| #define LOG_CRITICAL(log_class, ...) LOG_GENERIC(log_class, Critical, __VA_ARGS__) | ||||
| #define LOG_DEBUG(   log_class, ...) LOG_GENERIC(::Log::Class::log_class, ::Log::Level::Debug,    __VA_ARGS__) | ||||
| #define LOG_INFO(    log_class, ...) LOG_GENERIC(::Log::Class::log_class, ::Log::Level::Info,     __VA_ARGS__) | ||||
| #define LOG_WARNING( log_class, ...) LOG_GENERIC(::Log::Class::log_class, ::Log::Level::Warning,  __VA_ARGS__) | ||||
| #define LOG_ERROR(   log_class, ...) LOG_GENERIC(::Log::Class::log_class, ::Log::Level::Error,    __VA_ARGS__) | ||||
| #define LOG_CRITICAL(log_class, ...) LOG_GENERIC(::Log::Class::log_class, ::Log::Level::Critical, __VA_ARGS__) | ||||
|  |  | |||
|  | @ -113,7 +113,7 @@ void Process::Run(s32 main_thread_priority, u32 stack_size) { | |||
|     MapSegment(codeset->rodata, VMAPermission::Read,        MemoryState::Code); | ||||
|     MapSegment(codeset->data,   VMAPermission::ReadWrite,   MemoryState::Private); | ||||
| 
 | ||||
|     address_space->LogLayout(); | ||||
|     address_space->LogLayout(Log::Level::Debug); | ||||
|     Kernel::SetupMainThread(codeset->entrypoint, main_thread_priority); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -11,6 +11,15 @@ | |||
| 
 | ||||
| namespace Kernel { | ||||
| 
 | ||||
| static const char* GetMemoryStateName(MemoryState state) { | ||||
|     static const char* names[] = { | ||||
|         "Free", "Reserved", "IO", "Static", "Code", "Private", "Shared", "Continuous", "Aliased", | ||||
|         "Alias", "AliasCode", "Locked", | ||||
|     }; | ||||
| 
 | ||||
|     return names[(int)state]; | ||||
| } | ||||
| 
 | ||||
| bool VirtualMemoryArea::CanBeMergedWith(const VirtualMemoryArea& next) const { | ||||
|     ASSERT(base + size == next.base); | ||||
|     if (permissions != next.permissions || | ||||
|  | @ -134,13 +143,14 @@ void VMManager::Reprotect(VMAHandle vma_handle, VMAPermission new_perms) { | |||
|     MergeAdjacent(iter); | ||||
| } | ||||
| 
 | ||||
| void VMManager::LogLayout() const { | ||||
| void VMManager::LogLayout(Log::Level log_level) const { | ||||
|     for (const auto& p : vma_map) { | ||||
|         const VirtualMemoryArea& vma = p.second; | ||||
|         LOG_DEBUG(Kernel, "%08X - %08X  size: %8X %c%c%c", vma.base, vma.base + vma.size, vma.size, | ||||
|         LOG_GENERIC(Log::Class::Kernel, log_level, "%08X - %08X  size: %8X %c%c%c %s", | ||||
|             vma.base, vma.base + vma.size, vma.size, | ||||
|             (u8)vma.permissions & (u8)VMAPermission::Read    ? 'R' : '-', | ||||
|             (u8)vma.permissions & (u8)VMAPermission::Write   ? 'W' : '-', | ||||
|             (u8)vma.permissions & (u8)VMAPermission::Execute ? 'X' : '-'); | ||||
|             (u8)vma.permissions & (u8)VMAPermission::Execute ? 'X' : '-', GetMemoryStateName(vma.meminfo_state)); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -170,7 +170,7 @@ public: | |||
|     void Reprotect(VMAHandle vma, VMAPermission new_perms); | ||||
| 
 | ||||
|     /// Dumps the address space layout to the log, for debugging
 | ||||
|     void LogLayout() const; | ||||
|     void LogLayout(Log::Level log_level) const; | ||||
| 
 | ||||
| private: | ||||
|     using VMAIter = decltype(vma_map)::iterator; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue