diff options
| author | Alex Barney <thealexbarney@gmail.com> | 2019-06-15 20:31:18 -0500 |
|---|---|---|
| committer | Ac_K <Acoustik666@gmail.com> | 2019-06-16 03:31:18 +0200 |
| commit | 350a3667f755ffa80737995c953b31102f7bc523 (patch) | |
| tree | b106b45d8d95b77667ac03186817bf11d61c52a5 /Ryujinx.HLE/HOS | |
| parent | 5c1bc524092b3c5d867ce6204ac9db27b7359d3f (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.cs | 2 | ||||
| -rw-r--r-- | Ryujinx.HLE/HOS/Services/FspSrv/IFileSystemProxy.cs | 19 | ||||
| -rw-r--r-- | Ryujinx.HLE/HOS/Services/Lm/ILogger.cs | 11 |
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; |
