aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS
diff options
context:
space:
mode:
authorAlex Barney <thealexbarney@gmail.com>2019-06-15 20:31:18 -0500
committerAc_K <Acoustik666@gmail.com>2019-06-16 03:31:18 +0200
commit350a3667f755ffa80737995c953b31102f7bc523 (patch)
treeb106b45d8d95b77667ac03186817bf11d61c52a5 /Ryujinx.HLE/HOS
parent5c1bc524092b3c5d867ce6204ac9db27b7359d3f (diff)
Implement OutputAccessLogToSdCard and expose an FS access log option (#700)
* Add OutputAccessLogToSdCard * Add config options for the FS access log
Diffstat (limited to 'Ryujinx.HLE/HOS')
-rw-r--r--Ryujinx.HLE/HOS/Horizon.cs2
-rw-r--r--Ryujinx.HLE/HOS/Services/FspSrv/IFileSystemProxy.cs19
-rw-r--r--Ryujinx.HLE/HOS/Services/Lm/ILogger.cs11
3 files changed, 22 insertions, 10 deletions
diff --git a/Ryujinx.HLE/HOS/Horizon.cs b/Ryujinx.HLE/HOS/Horizon.cs
index 05b2b28f..51db8884 100644
--- a/Ryujinx.HLE/HOS/Horizon.cs
+++ b/Ryujinx.HLE/HOS/Horizon.cs
@@ -105,6 +105,8 @@ namespace Ryujinx.HLE.HOS
public IntegrityCheckLevel FsIntegrityCheckLevel { get; set; }
+ public int GlobalAccessLogMode { get; set; }
+
internal long HidBaseAddress { get; private set; }
public Horizon(Switch device)
diff --git a/Ryujinx.HLE/HOS/Services/FspSrv/IFileSystemProxy.cs b/Ryujinx.HLE/HOS/Services/FspSrv/IFileSystemProxy.cs
index 05abb7f0..23989365 100644
--- a/Ryujinx.HLE/HOS/Services/FspSrv/IFileSystemProxy.cs
+++ b/Ryujinx.HLE/HOS/Services/FspSrv/IFileSystemProxy.cs
@@ -1,6 +1,7 @@
using LibHac;
using LibHac.Fs;
using LibHac.Fs.NcaUtils;
+using Ryujinx.Common.Logging;
using Ryujinx.HLE.FileSystem;
using Ryujinx.HLE.HOS.Ipc;
using Ryujinx.HLE.Utilities;
@@ -32,7 +33,8 @@ namespace Ryujinx.HLE.HOS.Services.FspSrv
{ 200, OpenDataStorageByCurrentProcess },
{ 202, OpenDataStorageByDataId },
{ 203, OpenPatchDataStorageByCurrentProcess },
- { 1005, GetGlobalAccessLogMode }
+ { 1005, GetGlobalAccessLogMode },
+ { 1006, OutputAccessLogToSdCard }
};
}
@@ -208,7 +210,20 @@ namespace Ryujinx.HLE.HOS.Services.FspSrv
// GetGlobalAccessLogMode() -> u32 logMode
public long GetGlobalAccessLogMode(ServiceCtx context)
{
- context.ResponseData.Write(0);
+ int mode = context.Device.System.GlobalAccessLogMode;
+
+ context.ResponseData.Write(mode);
+
+ return 0;
+ }
+
+ // OutputAccessLogToSdCard(buffer<bytes, 5> log_text)
+ public long OutputAccessLogToSdCard(ServiceCtx context)
+ {
+ string message = ReadUtf8StringSend(context);
+
+ // FS ends each line with a newline. Remove it because Ryujinx logging adds its own newline
+ Logger.PrintAccessLog(LogClass.ServiceFs, message.TrimEnd('\n'));
return 0;
}
diff --git a/Ryujinx.HLE/HOS/Services/Lm/ILogger.cs b/Ryujinx.HLE/HOS/Services/Lm/ILogger.cs
index 070cf9ae..9122970c 100644
--- a/Ryujinx.HLE/HOS/Services/Lm/ILogger.cs
+++ b/Ryujinx.HLE/HOS/Services/Lm/ILogger.cs
@@ -41,6 +41,8 @@ namespace Ryujinx.HLE.HOS.Services.Lm
sb.AppendLine("Guest log:");
+ sb.AppendLine($" Log level: {(LmLogLevel)level}");
+
while (ms.Position < ms.Length)
{
byte type = reader.ReadByte();
@@ -86,14 +88,7 @@ namespace Ryujinx.HLE.HOS.Services.Lm
string text = sb.ToString();
- switch((LmLogLevel)level)
- {
- case LmLogLevel.Trace: Logger.PrintDebug (LogClass.ServiceLm, text); break;
- case LmLogLevel.Info: Logger.PrintInfo (LogClass.ServiceLm, text); break;
- case LmLogLevel.Warning: Logger.PrintWarning(LogClass.ServiceLm, text); break;
- case LmLogLevel.Error: Logger.PrintError (LogClass.ServiceLm, text); break;
- case LmLogLevel.Critical: Logger.PrintError (LogClass.ServiceLm, text); break;
- }
+ Logger.PrintGuest(LogClass.ServiceLm, text);
}
return 0;