From 4e3c18863be6ca38689f45a57237f106b961b301 Mon Sep 17 00:00:00 2001 From: smea Date: Sat, 16 Aug 2014 14:48:05 -0700 Subject: [PATCH] various fixes --- libctru/include/3ds/os.h | 1 - libctru/include/3ds/svc.h | 5 ++++- libctru/source/services/apt.c | 13 +++++++------ libctru/source/services/csnd.c | 1 + libctru/source/services/fs.c | 1 + libctru/source/services/gpu.c | 1 + libctru/source/services/gsp.c | 1 + libctru/source/services/gx.c | 4 ++-- libctru/source/services/hid.c | 3 ++- libctru/source/services/shdr.c | 1 + libctru/source/services/soc.c | 1 + libctru/source/srv.c | 15 ++++++--------- 12 files changed, 27 insertions(+), 20 deletions(-) diff --git a/libctru/include/3ds/os.h b/libctru/include/3ds/os.h index 1031222..e807f64 100644 --- a/libctru/include/3ds/os.h +++ b/libctru/include/3ds/os.h @@ -4,4 +4,3 @@ u32 osConvertVirtToPhys(u32 vaddr); #endif - diff --git a/libctru/include/3ds/svc.h b/libctru/include/3ds/svc.h index 1ba4259..58969ab 100644 --- a/libctru/include/3ds/svc.h +++ b/libctru/include/3ds/svc.h @@ -20,9 +20,12 @@ typedef enum { typedef enum { MEMPERM_READ =1, MEMPERM_WRITE =2, - MEMPERM_EXECUTE=4 + MEMPERM_EXECUTE=4, + MEMPERM_MAX =0xFFFFFFFF //force 4-byte } MemPerm; +u32* getThreadCommandBuffer(void); + s32 svcControlMemory(u32* addr_out, u32 addr0, u32 addr1, u32 size, MemOp op, MemPerm perm); void svcExitProcess(); s32 svcCreateThread(Handle* thread, ThreadFunc entrypoint, u32 arg, u32* stack_top, s32 thread_priority, s32 processor_id); diff --git a/libctru/source/services/apt.c b/libctru/source/services/apt.c index 9cdca30..36b0951 100644 --- a/libctru/source/services/apt.c +++ b/libctru/source/services/apt.c @@ -1,4 +1,5 @@ #include +#include #include <3ds/types.h> #include <3ds/srv.h> #include <3ds/APT.h> @@ -68,7 +69,7 @@ void aptInitCaptureInfo(u32 *ns_capinfo) void aptWaitStatusEvent() { - svcWaitSynchronization1(aptStatusEvent, U64_MAX); + svcWaitSynchronization(aptStatusEvent, U64_MAX); svcClearEvent(aptStatusEvent); } @@ -377,7 +378,7 @@ void aptSetupEventHandler() APP_STATUS aptGetStatus() { APP_STATUS ret; - svcWaitSynchronization1(aptStatusMutex, U64_MAX); + svcWaitSynchronization(aptStatusMutex, U64_MAX); ret=aptStatus; svcReleaseMutex(aptStatusMutex); return ret; @@ -387,7 +388,7 @@ void aptSetStatus(APP_STATUS status) { u32 prevstatus; - svcWaitSynchronization1(aptStatusMutex, U64_MAX); + svcWaitSynchronization(aptStatusMutex, U64_MAX); prevstatus = status; aptStatus = status; @@ -404,7 +405,7 @@ void aptSetStatus(APP_STATUS status) u32 aptGetStatusPower() { u32 ret; - svcWaitSynchronization1(aptStatusMutex, U64_MAX); + svcWaitSynchronization(aptStatusMutex, U64_MAX); ret=aptStatusPower; svcReleaseMutex(aptStatusMutex); return ret; @@ -412,14 +413,14 @@ u32 aptGetStatusPower() void aptSetStatusPower(u32 status) { - svcWaitSynchronization1(aptStatusMutex, U64_MAX); + svcWaitSynchronization(aptStatusMutex, U64_MAX); aptStatusPower = status; svcReleaseMutex(aptStatusMutex); } void aptOpenSession() { - svcWaitSynchronization1(aptLockHandle, U64_MAX); + svcWaitSynchronization(aptLockHandle, U64_MAX); srvGetServiceHandle(&aptuHandle, "APT:U"); } diff --git a/libctru/source/services/csnd.c b/libctru/source/services/csnd.c index c0e7c52..3663ab6 100644 --- a/libctru/source/services/csnd.c +++ b/libctru/source/services/csnd.c @@ -1,4 +1,5 @@ #include +#include #include <3ds/types.h> #include <3ds/os.h> #include <3ds/svc.h> diff --git a/libctru/source/services/fs.c b/libctru/source/services/fs.c index 8dc7073..701553f 100644 --- a/libctru/source/services/fs.c +++ b/libctru/source/services/fs.c @@ -1,3 +1,4 @@ +#include #include <3ds/types.h> #include <3ds/FS.h> #include <3ds/svc.h> diff --git a/libctru/source/services/gpu.c b/libctru/source/services/gpu.c index e459eb4..6515676 100644 --- a/libctru/source/services/gpu.c +++ b/libctru/source/services/gpu.c @@ -1,4 +1,5 @@ #include +#include #include <3ds/types.h> #include <3ds/GSP.h> #include <3ds/GX.h> diff --git a/libctru/source/services/gsp.c b/libctru/source/services/gsp.c index 50c1600..95e724d 100644 --- a/libctru/source/services/gsp.c +++ b/libctru/source/services/gsp.c @@ -1,4 +1,5 @@ #include +#include #include <3ds/types.h> #include <3ds/GSP.h> #include <3ds/svc.h> diff --git a/libctru/source/services/gx.c b/libctru/source/services/gx.c index d21af48..617bb8b 100644 --- a/libctru/source/services/gx.c +++ b/libctru/source/services/gx.c @@ -36,10 +36,10 @@ Result GX_SetMemoryFill(u32* gxbuf, u32* buf0a, u32 buf0v, u32* buf0e, u16 width gxCommand[0]=0x01000102; //CommandID gxCommand[1]=(u32)buf0a; //buf0 address gxCommand[2]=buf0v; //buf0 value - gxCommand[3]=(u32*)buf0e; //buf0 end addr + gxCommand[3]=(u32)buf0e; //buf0 end addr gxCommand[4]=(u32)buf1a; //buf1 address gxCommand[5]=buf1v; //buf1 value - gxCommand[6]=(u32*)buf1e; //buf1 end addr + gxCommand[6]=(u32)buf1e; //buf1 end addr gxCommand[7]=(width0)|(width1<<16); return GSPGPU_submitGxCommand(gxbuf, gxCommand, NULL); diff --git a/libctru/source/services/hid.c b/libctru/source/services/hid.c index 7d35e60..bb2d43f 100644 --- a/libctru/source/services/hid.c +++ b/libctru/source/services/hid.c @@ -1,4 +1,5 @@ #include +#include #include <3ds/types.h> #include <3ds/HID.h> #include <3ds/srv.h> @@ -18,7 +19,7 @@ Result hidInit(u32* sharedMem) if((ret=HIDUSER_GetInfo(NULL, &hidMemHandle)))return ret; hidSharedMem=sharedMem; - svcMapMemoryBlock(hidMemHandle, (u32)hidSharedMem, 0x1, 0x10000000); + svcMapMemoryBlock(hidMemHandle, (u32)hidSharedMem, MEMPERM_READ, 0x10000000); if((ret=HIDUSER_EnableAccelerometer(NULL)))return ret; diff --git a/libctru/source/services/shdr.c b/libctru/source/services/shdr.c index a5e053f..4183b66 100644 --- a/libctru/source/services/shdr.c +++ b/libctru/source/services/shdr.c @@ -1,4 +1,5 @@ #include +#include #include <3ds/types.h> #include <3ds/GSP.h> #include <3ds/GX.h> diff --git a/libctru/source/services/soc.c b/libctru/source/services/soc.c index 2298537..83d8458 100644 --- a/libctru/source/services/soc.c +++ b/libctru/source/services/soc.c @@ -9,6 +9,7 @@ #include #include #include +#include Handle SOCU_handle = 0; static int SOCU_errno = 0; diff --git a/libctru/source/srv.c b/libctru/source/srv.c index 4365b44..2aedc09 100644 --- a/libctru/source/srv.c +++ b/libctru/source/srv.c @@ -2,6 +2,7 @@ srv.c _ Service manager. */ +#include #include <3ds/types.h> #include <3ds/srv.h> #include <3ds/svc.h> @@ -68,10 +69,9 @@ Result srvInit() { Result rc = 0; - if(rc = svcConnectToPort(&g_srv_handle, "srv:")) - return rc; + if((rc = svcConnectToPort(&g_srv_handle, "srv:")))return rc; - if(rc = srvRegisterClient()) { + if((rc = srvRegisterClient())) { svcCloseHandle(g_srv_handle); g_srv_handle = 0; } @@ -81,8 +81,7 @@ Result srvInit() Result srvExit() { - if(g_srv_handle != 0) - svcCloseHandle(g_srv_handle); + if(g_srv_handle != 0)svcCloseHandle(g_srv_handle); g_srv_handle = 0; return 0; @@ -95,8 +94,7 @@ Result srvRegisterClient() cmdbuf[1] = 0x20; Result rc; - if(rc = svcSendSyncRequest(g_srv_handle)) - return rc; + if((rc = svcSendSyncRequest(g_srv_handle)))return rc; return cmdbuf[1]; } @@ -121,8 +119,7 @@ Result srvGetServiceHandle(Handle* out, char* name) cmdbuf[4] = 0x0; Result rc; - if(rc = svcSendSyncRequest(g_srv_handle)) - return rc; + if((rc = svcSendSyncRequest(g_srv_handle)))return rc; *out = cmdbuf[3]; return cmdbuf[1];