diff --git a/libctru/include/ctr/svc.h b/libctru/include/ctr/svc.h index ddd5950..dfa073e 100644 --- a/libctru/include/ctr/svc.h +++ b/libctru/include/ctr/svc.h @@ -15,7 +15,6 @@ typedef enum{ }MEMORY_OPERATION; u32* getThreadCommandBuffer(void); - Result svc_controlMemory(u32* outaddr, u32 addr0, u32 addr1, u32 size, u32 operation, u32 permissions); //(outaddr is usually the same as the input addr0) void svc_exitProcess(void); Result svc_createThread(Handle* thread, ThreadFunc entrypoint, u32 arg, u32* stacktop, s32 threadpriority, s32 processorid); @@ -23,6 +22,7 @@ typedef enum{ void svc_sleepThread(s64 ns); Result svc_createMutex(Handle* mutex, bool initialLocked); Result svc_releaseMutex(Handle handle); + Result svc_releaseSemaphore(s32* count, Handle semaphore, s32 releaseCount); Result svc_createEvent(Handle* event, u8 resettype); Result svc_signalEvent(Handle handle); Result svc_clearEvent(Handle handle); @@ -31,10 +31,10 @@ typedef enum{ Result svc_unmapMemoryBlock(Handle memblock, u32 addr); Result svc_waitSynchronization1(Handle handle, s64 nanoseconds); Result svc_waitSynchronizationN(s32* out, Handle* handles, s32 handlecount, bool waitAll, s64 nanoseconds); + Result svc_arbitrateAddress(Handle arbiter, u32 addr, u8 type, s32 value, s64 nanoseconds); Result svc_closeHandle(Handle handle); u64 svc_getSystemTick(); Result svc_getSystemInfo(s64* out, u32 type, s32 param); - Result svc_getProcessInfo(s64* out, Handle process, u32 type); Result svc_connectToPort(volatile Handle* out, const char* portName); Result svc_sendSyncRequest(Handle session); Result svc_getProcessId(u32 *out, Handle handle); diff --git a/libctru/source/svc.s b/libctru/source/svc.s index 09b4d9c..8fdce4a 100644 --- a/libctru/source/svc.s +++ b/libctru/source/svc.s @@ -67,6 +67,15 @@ svc_releaseMutex: svc 0x14 bx lr +.global svc_releaseSemaphore +.type svc_releaseSemaphore, %function +svc_releaseSemaphore: + str r0, [sp,#-4]! + svc 0x16 + ldr r2, [sp], #4 + str r1, [r2] + bx lr + .global svc_createEvent .type svc_createEvent, %function svc_createEvent: @@ -110,6 +119,12 @@ svc_unmapMemoryBlock: svc 0x20 bx lr +.global svc_arbitrateAddress +.type svc_arbitrateAddress, %function +svc_arbitrateAddress: + svc 0x22 + bx lr + .global svc_closeHandle .type svc_closeHandle, %function svc_closeHandle: