use svcDuplicateHandle in handle override

This commit is contained in:
smea 2014-08-17 13:37:49 -07:00
parent 2b4a219f87
commit 370707c663
3 changed files with 11 additions and 1 deletions

View File

@ -42,6 +42,7 @@ s32 svcUnmapMemoryBlock(Handle memblock, u32 addr);
s32 svcWaitSynchronization(Handle handle, s64 nanoseconds); s32 svcWaitSynchronization(Handle handle, s64 nanoseconds);
s32 svcWaitSynchronizationN(s32* out, Handle* handles, s32 handles_num, bool wait_all, s64 nanoseconds); s32 svcWaitSynchronizationN(s32* out, Handle* handles, s32 handles_num, bool wait_all, s64 nanoseconds);
s32 svcCloseHandle(Handle handle); s32 svcCloseHandle(Handle handle);
s32 svcDuplicateHandle(Handle* out, Handle original);
u64 svcGetSystemTick(); u64 svcGetSystemTick();
s32 svcGetSystemInfo(s64* out, u32 type, s32 param); s32 svcGetSystemInfo(s64* out, u32 type, s32 param);
s32 svcGetProcessInfo(s64* out, Handle process, u32 type); s32 svcGetProcessInfo(s64* out, Handle process, u32 type);

View File

@ -107,7 +107,7 @@ Result srvGetServiceHandle(Handle* out, char* name)
Handle h = __get_handle_from_list(name); Handle h = __get_handle_from_list(name);
if(h != 0) { if(h != 0) {
*out = h; return 0; return svcDuplicateHandle(out, h);
} }
#endif #endif

View File

@ -134,6 +134,15 @@ svcWaitSynchronizationN:
ldr r5, [sp], #4 ldr r5, [sp], #4
bx lr bx lr
.global svcDuplicateHandle
.type svcDuplicateHandle, %function
svcDuplicateHandle:
str r0, [sp,#-0x4]!
svc 0x27
ldr r3, [sp], #4
str r1, [r3]
bx lr
.global svcGetSystemTick .global svcGetSystemTick
.type svcGetSystemTick, %function .type svcGetSystemTick, %function
svcGetSystemTick: svcGetSystemTick: