mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-10-30 15:39:02 -05:00 
			
		
		
		
	core/memory: Migrate over address checking functions to the new Memory class
A fairly straightforward migration. These member functions can just be mostly moved verbatim with minor changes. We already have the necessary plumbing in places that they're used. IsKernelVirtualAddress() can remain a non-member function, since it doesn't rely on class state in any form.
This commit is contained in:
		| @@ -68,7 +68,7 @@ ResultCode AddressArbiter::SignalToAddressOnly(VAddr address, s32 num_to_wake) { | ||||
| ResultCode AddressArbiter::IncrementAndSignalToAddressIfEqual(VAddr address, s32 value, | ||||
|                                                               s32 num_to_wake) { | ||||
|     // Ensure that we can write to the address. | ||||
|     if (!Memory::IsValidVirtualAddress(address)) { | ||||
|     if (!system.Memory().IsValidVirtualAddress(address)) { | ||||
|         return ERR_INVALID_ADDRESS_STATE; | ||||
|     } | ||||
|  | ||||
| @@ -83,7 +83,7 @@ ResultCode AddressArbiter::IncrementAndSignalToAddressIfEqual(VAddr address, s32 | ||||
| ResultCode AddressArbiter::ModifyByWaitingCountAndSignalToAddressIfEqual(VAddr address, s32 value, | ||||
|                                                                          s32 num_to_wake) { | ||||
|     // Ensure that we can write to the address. | ||||
|     if (!Memory::IsValidVirtualAddress(address)) { | ||||
|     if (!system.Memory().IsValidVirtualAddress(address)) { | ||||
|         return ERR_INVALID_ADDRESS_STATE; | ||||
|     } | ||||
|  | ||||
| @@ -135,7 +135,7 @@ ResultCode AddressArbiter::WaitForAddress(VAddr address, ArbitrationType type, s | ||||
| ResultCode AddressArbiter::WaitForAddressIfLessThan(VAddr address, s32 value, s64 timeout, | ||||
|                                                     bool should_decrement) { | ||||
|     // Ensure that we can read the address. | ||||
|     if (!Memory::IsValidVirtualAddress(address)) { | ||||
|     if (!system.Memory().IsValidVirtualAddress(address)) { | ||||
|         return ERR_INVALID_ADDRESS_STATE; | ||||
|     } | ||||
|  | ||||
| @@ -158,7 +158,7 @@ ResultCode AddressArbiter::WaitForAddressIfLessThan(VAddr address, s32 value, s6 | ||||
|  | ||||
| ResultCode AddressArbiter::WaitForAddressIfEqual(VAddr address, s32 value, s64 timeout) { | ||||
|     // Ensure that we can read the address. | ||||
|     if (!Memory::IsValidVirtualAddress(address)) { | ||||
|     if (!system.Memory().IsValidVirtualAddress(address)) { | ||||
|         return ERR_INVALID_ADDRESS_STATE; | ||||
|     } | ||||
|     // Only wait for the address if equal. | ||||
|   | ||||
| @@ -332,7 +332,7 @@ static ResultCode UnmapMemory(Core::System& system, VAddr dst_addr, VAddr src_ad | ||||
| /// Connect to an OS service given the port name, returns the handle to the port to out | ||||
| static ResultCode ConnectToNamedPort(Core::System& system, Handle* out_handle, | ||||
|                                      VAddr port_name_address) { | ||||
|     if (!Memory::IsValidVirtualAddress(port_name_address)) { | ||||
|     if (!system.Memory().IsValidVirtualAddress(port_name_address)) { | ||||
|         LOG_ERROR(Kernel_SVC, | ||||
|                   "Port Name Address is not a valid virtual address, port_name_address=0x{:016X}", | ||||
|                   port_name_address); | ||||
| @@ -452,7 +452,7 @@ static ResultCode WaitSynchronization(Core::System& system, Handle* index, VAddr | ||||
|     LOG_TRACE(Kernel_SVC, "called handles_address=0x{:X}, handle_count={}, nano_seconds={}", | ||||
|               handles_address, handle_count, nano_seconds); | ||||
|  | ||||
|     if (!Memory::IsValidVirtualAddress(handles_address)) { | ||||
|     if (!system.Memory().IsValidVirtualAddress(handles_address)) { | ||||
|         LOG_ERROR(Kernel_SVC, | ||||
|                   "Handle address is not a valid virtual address, handle_address=0x{:016X}", | ||||
|                   handles_address); | ||||
|   | ||||
| @@ -162,13 +162,13 @@ ResultVal<std::shared_ptr<Thread>> Thread::Create(KernelCore& kernel, std::strin | ||||
|         return ERR_INVALID_PROCESSOR_ID; | ||||
|     } | ||||
|  | ||||
|     if (!Memory::IsValidVirtualAddress(owner_process, entry_point)) { | ||||
|     auto& system = Core::System::GetInstance(); | ||||
|     if (!system.Memory().IsValidVirtualAddress(owner_process, entry_point)) { | ||||
|         LOG_ERROR(Kernel_SVC, "(name={}): invalid entry {:016X}", name, entry_point); | ||||
|         // TODO (bunnei): Find the correct error code to use here | ||||
|         return RESULT_UNKNOWN; | ||||
|     } | ||||
|  | ||||
|     auto& system = Core::System::GetInstance(); | ||||
|     std::shared_ptr<Thread> thread = std::make_shared<Thread>(kernel); | ||||
|  | ||||
|     thread->thread_id = kernel.CreateNewThreadID(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Lioncash
					Lioncash