mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-10-31 16:09:03 -05:00 
			
		
		
		
	ac:u: stub CloseAsync; check memory size aling in svc:GetProcessInfo(type=2)
This commit is contained in:
		| @@ -3,6 +3,8 @@ | ||||
| // Refer to the license.txt file included. | ||||
|  | ||||
| #include "common/logging/log.h" | ||||
|  | ||||
| #include "core/hle/kernel/event.h" | ||||
| #include "core/hle/service/ac_u.h" | ||||
|  | ||||
| //////////////////////////////////////////////////////////////////////////////////////////////////// | ||||
| @@ -10,6 +12,28 @@ | ||||
|  | ||||
| namespace AC_U { | ||||
|  | ||||
| /** | ||||
|  * AC_U::CloseAsync service function | ||||
|  *  Inputs: | ||||
|  *      1 : Always 0x20 | ||||
|  *      3 : Always 0 | ||||
|  *      4 : Event handle, should be signaled when AC connection is closed | ||||
|  *  Outputs: | ||||
|  *      1 : Result of function, 0 on success, otherwise error code | ||||
|  */ | ||||
| static void CloseAsync(Service::Interface* self) { | ||||
|     u32* cmd_buff = Kernel::GetCommandBuffer(); | ||||
|  | ||||
|     auto evt = Kernel::g_handle_table.Get<Kernel::Event>(cmd_buff[4]); | ||||
|  | ||||
|     if (evt) { | ||||
|         evt->name = "AC_U:close_event"; | ||||
|         evt->Signal(); | ||||
|     } | ||||
|     cmd_buff[1] = RESULT_SUCCESS.raw; // No error | ||||
|  | ||||
|     LOG_WARNING(Service_AC, "(STUBBED) called"); | ||||
| } | ||||
| /** | ||||
|  * AC_U::GetWifiStatus service function | ||||
|  *  Outputs: | ||||
| @@ -47,7 +71,7 @@ const Interface::FunctionInfo FunctionTable[] = { | ||||
|     {0x00010000, nullptr,               "CreateDefaultConfig"}, | ||||
|     {0x00040006, nullptr,               "ConnectAsync"}, | ||||
|     {0x00050002, nullptr,               "GetConnectResult"}, | ||||
|     {0x00080004, nullptr,               "CloseAsync"}, | ||||
|     {0x00080004, CloseAsync,            "CloseAsync"}, | ||||
|     {0x00090002, nullptr,               "GetCloseResult"}, | ||||
|     {0x000A0000, nullptr,               "GetLastErrorCode"}, | ||||
|     {0x000D0000, GetWifiStatus,         "GetWifiStatus"}, | ||||
|   | ||||
| @@ -860,6 +860,10 @@ static ResultCode GetProcessInfo(s64* out, Handle process_handle, u32 type) { | ||||
|         // TODO(yuriks): Type 0 returns a slightly higher number than type 2, but I'm not sure | ||||
|         // what's the difference between them. | ||||
|         *out = process->heap_used + process->linear_heap_used + process->misc_memory_used; | ||||
|         if(*out % Memory::PAGE_SIZE != 0) { | ||||
|             LOG_ERROR(Kernel_SVC, "called, memory size not page-aligned"); | ||||
|             return ERR_MISALIGNED_SIZE; | ||||
|         } | ||||
|         break; | ||||
|     case 1: | ||||
|     case 3: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 mailwl
					mailwl