aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.HLE/HOS/Services
diff options
context:
space:
mode:
authorAlex Barney <thealexbarney@gmail.com>2023-10-22 16:30:46 -0700
committerGitHub <noreply@github.com>2023-10-22 20:30:46 -0300
commitd773d5152e685a164a6eb9f419873ef1908364f7 (patch)
tree7820ebb263e6b5b958fa76782260efd95b88a091 /src/Ryujinx.HLE/HOS/Services
parent33ba1703158564c2c3564fa329fd2e630f8a8e95 (diff)
Update to LibHac 0.19.0 (#5831)
* Update to LibHac v0.19.0 - PartitionFileSystem classes now fully match Nintendo's implementation. Current code creating a PartitionFileSystem now need to use the Initialize method. - Implementing nn::gcsrv and nn::sdmmcsrv now means the FS server now uses that abstraction instead of the old one where we passed in an IDeviceOperator. * Add GetFileSystemAttribute
Diffstat (limited to 'src/Ryujinx.HLE/HOS/Services')
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/FileSystemProxyHelper.cs7
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IFileSystem.cs11
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Fs/IFileSystemProxy.cs5
3 files changed, 20 insertions, 3 deletions
diff --git a/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/FileSystemProxyHelper.cs b/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/FileSystemProxyHelper.cs
index 599025e3..1ef52a00 100644
--- a/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/FileSystemProxyHelper.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/FileSystemProxyHelper.cs
@@ -26,7 +26,9 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy
try
{
LocalStorage storage = new(pfsPath, FileAccess.Read, FileMode.Open);
- using SharedRef<LibHac.Fs.Fsa.IFileSystem> nsp = new(new PartitionFileSystem(storage));
+ var pfs = new PartitionFileSystem();
+ using SharedRef<LibHac.Fs.Fsa.IFileSystem> nsp = new(pfs);
+ pfs.Initialize(storage).ThrowIfFailure();
ImportTitleKeysFromNsp(nsp.Get, context.Device.System.KeySet);
@@ -90,7 +92,8 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy
try
{
- PartitionFileSystem nsp = new(pfsFile.AsStorage());
+ PartitionFileSystem nsp = new();
+ nsp.Initialize(pfsFile.AsStorage()).ThrowIfFailure();
ImportTitleKeysFromNsp(nsp, context.Device.System.KeySet);
diff --git a/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IFileSystem.cs b/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IFileSystem.cs
index 4c5c5624..66020d57 100644
--- a/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IFileSystem.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IFileSystem.cs
@@ -1,6 +1,7 @@
using LibHac;
using LibHac.Common;
using LibHac.Fs;
+using LibHac.Fs.Fsa;
using Path = LibHac.FsSrv.Sf.Path;
namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy
@@ -202,6 +203,16 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy
return (ResultCode)result.Value;
}
+ [CommandCmif(16)]
+ public ResultCode GetFileSystemAttribute(ServiceCtx context)
+ {
+ Result result = _fileSystem.Get.GetFileSystemAttribute(out FileSystemAttribute attribute);
+
+ context.ResponseData.Write(SpanHelpers.AsReadOnlyByteSpan(in attribute));
+
+ return (ResultCode)result.Value;
+ }
+
protected override void Dispose(bool isDisposing)
{
if (isDisposing)
diff --git a/src/Ryujinx.HLE/HOS/Services/Fs/IFileSystemProxy.cs b/src/Ryujinx.HLE/HOS/Services/Fs/IFileSystemProxy.cs
index 644e1a17..24dd1e9b 100644
--- a/src/Ryujinx.HLE/HOS/Services/Fs/IFileSystemProxy.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Fs/IFileSystemProxy.cs
@@ -1380,7 +1380,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs
[CommandCmif(1016)]
public ResultCode FlushAccessLogOnSdCard(ServiceCtx context)
{
- return (ResultCode)_baseFileSystemProxy.Get.FlushAccessLogOnSdCard().Value;
+ // Logging the access log to the SD card isn't implemented, meaning this function will be a no-op since
+ // there's nothing to flush. Return success until it's implemented.
+ // return (ResultCode)_baseFileSystemProxy.Get.FlushAccessLogOnSdCard().Value;
+ return ResultCode.Success;
}
[CommandCmif(1017)]