mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 00:49:02 -06:00 
			
		
		
		
	VMManager: Make LogLayout log level configurable as a parameter
This commit is contained in:
		@@ -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;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user