]> Chaos Git - corbenik/ctrulib.git/commitdiff
Use IPC helpers for fs
authorLectem <lectem@gmail.com>
Wed, 9 Sep 2015 19:06:21 +0000 (15:06 -0400)
committerLectem <lectem@gmail.com>
Sat, 3 Oct 2015 10:58:43 +0000 (06:58 -0400)
libctru/source/services/fs.c

index 21d42dda9f592c89cfe2f580cf10ded505848809..e9c6fa6d1f1b55b573ecff2f578749aa7924bb4b 100644 (file)
@@ -3,6 +3,7 @@
 #include <3ds/svc.h>
 #include <3ds/srv.h>
 #include <3ds/services/fs.h>
+#include <3ds/ipc.h>
 
 /*! @internal
  *
@@ -105,8 +106,8 @@ FSUSER_Initialize(Handle handle)
 {
        u32 *cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[0] = 0x08010002;
-       cmdbuf[1] = 0x20;
+       cmdbuf[0] = IPC_MakeHeader(0x801,0,2); // 0x8010002
+       cmdbuf[1] = IPC_Desc_CurProcessHandle();
 
        Result ret = 0;
        if((ret = svcSendSyncRequest(handle)))
@@ -165,7 +166,7 @@ FSUSER_OpenFile(Handle     *out,
 {
        u32 *cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[0] = 0x080201C2;
+       cmdbuf[0] = IPC_MakeHeader(0x802,7,2); // 0x80201C2
        cmdbuf[1] = 0;
        cmdbuf[2] = archive.handleLow;
        cmdbuf[3] = archive.handleHigh;
@@ -173,7 +174,7 @@ FSUSER_OpenFile(Handle     *out,
        cmdbuf[5] = fileLowPath.size;
        cmdbuf[6] = openFlags;
        cmdbuf[7] = attributes;
-       cmdbuf[8] = (fileLowPath.size << 14) | 0x2;
+       cmdbuf[8] = IPC_Desc_StaticBuffer(fileLowPath.size,0);
        cmdbuf[9] = (u32)fileLowPath.data;
 
        Result ret = 0;
@@ -239,7 +240,7 @@ FSUSER_OpenFileDirectly(Handle     *out,
 {
        u32 *cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[ 0] = 0x08030204;
+       cmdbuf[ 0] = IPC_MakeHeader(0x803,8,4); // 0x8030204
        cmdbuf[ 1] = 0;
        cmdbuf[ 2] = archive.id;
        cmdbuf[ 3] = archive.lowPath.type;
@@ -248,9 +249,9 @@ FSUSER_OpenFileDirectly(Handle     *out,
        cmdbuf[ 6] = fileLowPath.size;
        cmdbuf[ 7] = openFlags;
        cmdbuf[ 8] = attributes;
-       cmdbuf[ 9] = (archive.lowPath.size << 14) | 0x802;
+       cmdbuf[ 9] = IPC_Desc_StaticBuffer(archive.lowPath.size,2);
        cmdbuf[10] = (u32)archive.lowPath.data;
-       cmdbuf[11] = (fileLowPath.size << 14) | 0x2;
+       cmdbuf[11] = IPC_Desc_StaticBuffer(fileLowPath.size,0);
        cmdbuf[12] = (u32)fileLowPath.data;
 
        Result ret = 0;
@@ -298,13 +299,13 @@ FSUSER_DeleteFile(FS_archive archive,
 {
        u32 *cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[0] = 0x08040142;
+       cmdbuf[0] = IPC_MakeHeader(0x804,5,2); // 0x8040142
        cmdbuf[1] = 0;
        cmdbuf[2] = archive.handleLow;
        cmdbuf[3] = archive.handleHigh;
        cmdbuf[4] = fileLowPath.type;
        cmdbuf[5] = fileLowPath.size;
-       cmdbuf[6] = (fileLowPath.size << 14) | 0x2;
+       cmdbuf[6] = IPC_Desc_StaticBuffer(fileLowPath.size ,0);
        cmdbuf[7] = (u32)fileLowPath.data;
 
        Result ret = 0;
@@ -359,7 +360,7 @@ FSUSER_RenameFile(FS_archive srcArchive,
 {
        u32 *cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[0] = 0x08050244;
+       cmdbuf[0] = IPC_MakeHeader(0x805,9,4); // 0x8050244
        cmdbuf[1] = 0;
        cmdbuf[2] = srcArchive.handleLow;
        cmdbuf[3] = srcArchive.handleHigh;
@@ -369,9 +370,9 @@ FSUSER_RenameFile(FS_archive srcArchive,
        cmdbuf[7] = destArchive.handleHigh;
        cmdbuf[8] = destFileLowPath.type;
        cmdbuf[9] = destFileLowPath.size;
-       cmdbuf[10] = (srcFileLowPath.size << 14) | 0x402;
+       cmdbuf[10] = IPC_Desc_StaticBuffer(srcFileLowPath.size,1);
        cmdbuf[11] = (u32)srcFileLowPath.data;
-       cmdbuf[12] = (destFileLowPath.size << 14) | 0x802;
+       cmdbuf[12] = IPC_Desc_StaticBuffer(destFileLowPath.size,2);
        cmdbuf[13] = (u32)destFileLowPath.data;
 
        Result ret = 0;
@@ -416,13 +417,13 @@ FSUSER_DeleteDirectory(FS_archive archive,
 {
        u32 *cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[0] = 0x08060142;
+       cmdbuf[0] = IPC_MakeHeader(0x806,5,2); // 0x8060142
        cmdbuf[1] = 0;
        cmdbuf[2] = archive.handleLow;
        cmdbuf[3] = archive.handleHigh;
        cmdbuf[4] = dirLowPath.type;
        cmdbuf[5] = dirLowPath.size;
-       cmdbuf[6] = (dirLowPath.size << 14) | 0x2;
+       cmdbuf[6] = IPC_Desc_StaticBuffer(dirLowPath.size,0);
        cmdbuf[7] = (u32)dirLowPath.data;
 
        Result ret = 0;
@@ -467,13 +468,13 @@ FSUSER_DeleteDirectoryRecursively(FS_archive archive,
 {
        u32 *cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[0] = 0x08070142;
+       cmdbuf[0] = IPC_MakeHeader(0x807,5,2); // 0x8070142
        cmdbuf[1] = 0;
        cmdbuf[2] = archive.handleLow;
        cmdbuf[3] = archive.handleHigh;
        cmdbuf[4] = dirLowPath.type;
        cmdbuf[5] = dirLowPath.size;
-       cmdbuf[6] = (dirLowPath.size << 14) | 0x2;
+       cmdbuf[6] = IPC_Desc_StaticBuffer(dirLowPath.size,0);
        cmdbuf[7] = (u32)dirLowPath.data;
 
        Result ret = 0;
@@ -523,7 +524,7 @@ FSUSER_CreateFile(FS_archive archive,
 {
        u32 *cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[0]  = 0x08080202;
+       cmdbuf[0]  = IPC_MakeHeader(0x808,8,2); // 0x8080202
        cmdbuf[1]  = 0;
        cmdbuf[2]  = archive.handleLow;
        cmdbuf[3]  = archive.handleHigh;
@@ -532,7 +533,7 @@ FSUSER_CreateFile(FS_archive archive,
        cmdbuf[6]  = 0;
        cmdbuf[7]  = fileSize;
        cmdbuf[8]  = 0;
-       cmdbuf[9]  = (fileLowPath.size << 14) | 0x2;
+       cmdbuf[9]  = IPC_Desc_StaticBuffer(fileLowPath.size,0);
        cmdbuf[10] = (u32)fileLowPath.data;
 
        Result ret = 0;
@@ -578,14 +579,14 @@ FSUSER_CreateDirectory(FS_archive archive,
 {
        u32 *cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[0] = 0x08090182;
+       cmdbuf[0] = IPC_MakeHeader(0x809,6,2); // 0x8090182
        cmdbuf[1] = 0;
        cmdbuf[2] = archive.handleLow;
        cmdbuf[3] = archive.handleHigh;
        cmdbuf[4] = dirLowPath.type;
        cmdbuf[5] = dirLowPath.size;
        cmdbuf[6] = 0;
-       cmdbuf[7] = (dirLowPath.size << 14) | 0x2;
+       cmdbuf[7] = IPC_Desc_StaticBuffer(dirLowPath.size,0);
        cmdbuf[8] = (u32)dirLowPath.data;
 
        Result ret = 0;
@@ -640,7 +641,7 @@ FSUSER_RenameDirectory(FS_archive srcArchive,
 {
        u32 *cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[0] = 0x080A0244;
+       cmdbuf[0] = IPC_MakeHeader(0x80A,9,4); // 0x80A0244
        cmdbuf[1] = 0;
        cmdbuf[2] = srcArchive.handleLow;
        cmdbuf[3] = srcArchive.handleHigh;
@@ -650,9 +651,9 @@ FSUSER_RenameDirectory(FS_archive srcArchive,
        cmdbuf[7] = destArchive.handleHigh;
        cmdbuf[8] = destDirLowPath.type;
        cmdbuf[9] = destDirLowPath.size;
-       cmdbuf[10] = (srcDirLowPath.size << 14) | 0x402;
+       cmdbuf[10] = IPC_Desc_StaticBuffer(srcDirLowPath.size,1);
        cmdbuf[11] = (u32)srcDirLowPath.data;
-       cmdbuf[12] = (destDirLowPath.size << 14) | 0x802;
+       cmdbuf[12] = IPC_Desc_StaticBuffer(destDirLowPath.size,2);
        cmdbuf[13] = (u32)destDirLowPath.data;
 
        Result ret = 0;
@@ -699,12 +700,12 @@ FSUSER_OpenDirectory(Handle     *out,
 {
        u32 *cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[0] = 0x080B0102;
+       cmdbuf[0] = IPC_MakeHeader(0x80B,4,2); // 0x80B0102
        cmdbuf[1] = archive.handleLow;
        cmdbuf[2] = archive.handleHigh;
        cmdbuf[3] = dirLowPath.type;
        cmdbuf[4] = dirLowPath.size;
-       cmdbuf[5] = (dirLowPath.size << 14) | 0x2;
+       cmdbuf[5] = IPC_Desc_StaticBuffer(dirLowPath.size,0);
        cmdbuf[6] = (u32)dirLowPath.data;
 
        Result ret = 0;
@@ -753,11 +754,11 @@ FSUSER_OpenArchive(FS_archive *archive)
 
        u32 *cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[0] = 0x080C00C2;
+       cmdbuf[0] = IPC_MakeHeader(0x80C,3,2); // 0x80C00C2
        cmdbuf[1] = archive->id;
        cmdbuf[2] = archive->lowPath.type;
        cmdbuf[3] = archive->lowPath.size;
-       cmdbuf[4] = (archive->lowPath.size << 14) | 0x2;
+       cmdbuf[4] = IPC_Desc_StaticBuffer(archive->lowPath.size,0);
        cmdbuf[5] = (u32)archive->lowPath.data;
 
        Result ret = 0;
@@ -802,7 +803,7 @@ FSUSER_CloseArchive(FS_archive *archive)
 
        u32 *cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[0] = 0x080E0080;
+       cmdbuf[0] = IPC_MakeHeader(0x80E,2,0); // 0x80E0080
        cmdbuf[1] = archive->handleLow;
        cmdbuf[2] = archive->handleHigh;
 
@@ -849,7 +850,7 @@ FSUSER_GetSdmcArchiveResource(u32    *sectorSize,
 {
        u32 *cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[0] = 0x08140000;
+       cmdbuf[0] = IPC_MakeHeader(0x814,0,0); // 0x8140000
 
        Result ret = 0;
        if((ret = svcSendSyncRequest(fsuHandle)))
@@ -906,7 +907,7 @@ FSUSER_GetNandArchiveResource(u32    *sectorSize,
 {
        u32 *cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[0] = 0x08150000;
+       cmdbuf[0] = IPC_MakeHeader(0x815,0,0); // 0x8150000
 
        Result ret = 0;
        if((ret = svcSendSyncRequest(fsuHandle)))
@@ -954,7 +955,7 @@ FSUSER_IsSdmcDetected(u8    *detected)
 {
        u32 *cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[0] = 0x08170000;
+       cmdbuf[0] = IPC_MakeHeader(0x817,0,0); // 0x8170000
 
        Result ret = 0;
        if((ret = svcSendSyncRequest(fsuHandle)))
@@ -992,7 +993,7 @@ FSUSER_GetMediaType(u8* mediatype)
 {
        u32* cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[0] = 0x08680000;
+       cmdbuf[0] = IPC_MakeHeader(0x868,0,0); // 0x8680000
 
        Result ret = 0;
        if((ret = svcSendSyncRequest(fsuHandle)))
@@ -1031,7 +1032,7 @@ FSUSER_IsSdmcWritable(u8 *writable)
 {
        u32 *cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[0] = 0x08180000;
+       cmdbuf[0] = IPC_MakeHeader(0x818,0,0); // 0x8180000
 
        Result ret = 0;
        if((ret = svcSendSyncRequest(fsuHandle)))
@@ -1069,7 +1070,7 @@ FSFILE_Close(Handle handle)
 {
        u32* cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[0] = 0x08080000;
+       cmdbuf[0] = IPC_MakeHeader(0x808,0,0); // 0x8080000
 
        Result ret = 0;
        if((ret = svcSendSyncRequest(handle)))
@@ -1121,11 +1122,11 @@ FSFILE_Read(Handle handle,
 {
        u32 *cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[0] = 0x080200C2;
+       cmdbuf[0] = IPC_MakeHeader(0x802,3,2); // 0x80200C2
        cmdbuf[1] = (u32)offset;
        cmdbuf[2] = (u32)(offset >> 32);
        cmdbuf[3] = size;
-       cmdbuf[4] = (size << 4) | 0xC;
+       cmdbuf[4] = IPC_Desc_Buffer(size,IPC_BUFFER_W);
        cmdbuf[5] = (u32)buffer;
 
        Result ret = 0;
@@ -1189,12 +1190,12 @@ FSFILE_Write(Handle     handle,
 {
        u32 *cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[0] = 0x08030102;
+       cmdbuf[0] = IPC_MakeHeader(0x803,4,2); // 0x8030102
        cmdbuf[1] = (u32)offset;
        cmdbuf[2] = (u32)(offset >> 32);
        cmdbuf[3] = size;
        cmdbuf[4] = flushFlags;
-       cmdbuf[5] = (size << 4) | 0xA;
+       cmdbuf[5] = IPC_Desc_Buffer(size,IPC_BUFFER_R);
        cmdbuf[6] = (u32)buffer;
 
        Result ret = 0;
@@ -1237,7 +1238,7 @@ FSFILE_GetSize(Handle handle,
 {
        u32 *cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[0] = 0x08040000;
+       cmdbuf[0] = IPC_MakeHeader(0x804,0,0); // 0x8040000
 
        Result ret = 0;
        if((ret = svcSendSyncRequest(handle)))
@@ -1279,7 +1280,7 @@ FSFILE_SetSize(Handle handle,
 {
        u32 *cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[0] = 0x08050080;
+       cmdbuf[0] = IPC_MakeHeader(0x805,2,0); // 0x8050080
        cmdbuf[1] = (u32)size;
        cmdbuf[2] = (u32)(size >> 32);
 
@@ -1320,7 +1321,7 @@ FSFILE_GetAttributes(Handle handle,
 {
        u32 *cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[0] = 0x08060000;
+       cmdbuf[0] = IPC_MakeHeader(0x806,0,0); // 0x8060000
 
        Result ret = 0;
        if((ret = svcSendSyncRequest(handle)))
@@ -1361,7 +1362,7 @@ FSFILE_SetAttributes(Handle handle,
 {
        u32 *cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[0] = 0x08070040;
+       cmdbuf[0] = IPC_MakeHeader(0x807,1,0); // 0x8070040
        cmdbuf[1] = attributes;
 
        Result ret = 0;
@@ -1397,7 +1398,7 @@ FSFILE_Flush(Handle handle)
 {
        u32 *cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[0] = 0x08090000;
+       cmdbuf[0] = IPC_MakeHeader(0x809,0,0); // 0x8090000
 
        Result ret = 0;
        if((ret = svcSendSyncRequest(handle)))
@@ -1442,9 +1443,9 @@ FSDIR_Read(Handle    handle,
 {
        u32 *cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[0] = 0x08010042;
+       cmdbuf[0] = IPC_MakeHeader(0x801,1,2); // 0x8010042
        cmdbuf[1] = entryCount;
-       cmdbuf[2] = ((entryCount*0x228) << 4) | 0xC;
+       cmdbuf[2] = IPC_Desc_Buffer(entryCount*0x228,IPC_BUFFER_W);
        cmdbuf[3] = (u32)buffer;
 
        Result ret = 0;
@@ -1483,7 +1484,7 @@ FSDIR_Close(Handle handle)
 {
        u32 *cmdbuf = getThreadCommandBuffer();
 
-       cmdbuf[0] = 0x08020000;
+       cmdbuf[0] = IPC_MakeHeader(0x802,0,0); // 0x8020000
 
        Result ret = 0;
        if((ret = svcSendSyncRequest(handle)))