aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Services/Lm/LogService/ILogger.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.HLE/HOS/Services/Lm/LogService/ILogger.cs')
-rw-r--r--Ryujinx.HLE/HOS/Services/Lm/LogService/ILogger.cs150
1 files changed, 75 insertions, 75 deletions
diff --git a/Ryujinx.HLE/HOS/Services/Lm/LogService/ILogger.cs b/Ryujinx.HLE/HOS/Services/Lm/LogService/ILogger.cs
index 05b7238e..732ab856 100644
--- a/Ryujinx.HLE/HOS/Services/Lm/LogService/ILogger.cs
+++ b/Ryujinx.HLE/HOS/Services/Lm/LogService/ILogger.cs
@@ -8,29 +8,16 @@ namespace Ryujinx.HLE.HOS.Services.Lm.LogService
{
public ILogger() { }
- private static int ReadEncodedInt(BinaryReader reader)
+ [Command(0)]
+ // Log(buffer<unknown, 0x21>)
+ public ResultCode Log(ServiceCtx context)
{
- int result = 0;
- int position = 0;
-
- byte encoded;
-
- do
- {
- encoded = reader.ReadByte();
-
- result += (encoded & 0x7F) << (7 * position);
-
- position++;
+ Logger.Guest?.Print(LogClass.ServiceLm, LogImpl(context));
- } while ((encoded & 0x80) != 0);
-
- return result;
+ return ResultCode.Success;
}
- [Command(0)]
- // Log(buffer<unknown, 0x21>)
- public ResultCode Log(ServiceCtx context)
+ private string LogImpl(ServiceCtx context)
{
(long bufPos, long bufSize) = context.Request.GetBufferType0x21();
@@ -38,72 +25,85 @@ namespace Ryujinx.HLE.HOS.Services.Lm.LogService
context.Memory.Read((ulong)bufPos, logBuffer);
- using (MemoryStream ms = new MemoryStream(logBuffer))
- {
- BinaryReader reader = new BinaryReader(ms);
+ using MemoryStream ms = new MemoryStream(logBuffer);
- long pid = reader.ReadInt64();
- long threadContext = reader.ReadInt64();
- short flags = reader.ReadInt16();
- byte level = reader.ReadByte();
- byte verbosity = reader.ReadByte();
- int payloadLength = reader.ReadInt32();
+ BinaryReader reader = new BinaryReader(ms);
- StringBuilder sb = new StringBuilder();
+ long pid = reader.ReadInt64();
+ long threadContext = reader.ReadInt64();
+ short flags = reader.ReadInt16();
+ byte level = reader.ReadByte();
+ byte verbosity = reader.ReadByte();
+ int payloadLength = reader.ReadInt32();
- sb.AppendLine("Guest log:");
+ StringBuilder sb = new StringBuilder();
- sb.AppendLine($" Log level: {(LmLogLevel)level}");
+ sb.AppendLine($"Guest Log:\n Log level: {(LmLogLevel)level}");
- while (ms.Position < ms.Length)
+ while (ms.Position < ms.Length)
+ {
+ int type = ReadEncodedInt(reader);
+ int size = ReadEncodedInt(reader);
+
+ LmLogField field = (LmLogField)type;
+
+ string fieldStr = string.Empty;
+
+ if (field == LmLogField.Start)
{
- int type = ReadEncodedInt(reader);
- int size = ReadEncodedInt(reader);
-
- LmLogField field = (LmLogField)type;
-
- string fieldStr = string.Empty;
-
- if (field == LmLogField.Start)
- {
- reader.ReadBytes(size);
-
- continue;
- }
- else if (field == LmLogField.Stop)
- {
- break;
- }
- else if (field == LmLogField.Line)
- {
- fieldStr = $"{field}: {reader.ReadInt32()}";
- }
- else if (field == LmLogField.DropCount)
- {
- fieldStr = $"{field}: {reader.ReadInt64()}";
- }
- else if (field == LmLogField.Time)
- {
- fieldStr = $"{field}: {reader.ReadInt64()}s";
- }
- else if (field < LmLogField.Count)
- {
- fieldStr = $"{field}: '{Encoding.UTF8.GetString(reader.ReadBytes(size)).TrimEnd()}'";
- }
- else
- {
- fieldStr = $"Field{field}: '{Encoding.UTF8.GetString(reader.ReadBytes(size)).TrimEnd()}'";
- }
-
- sb.AppendLine(" " + fieldStr);
- }
+ reader.ReadBytes(size);
- string text = sb.ToString();
+ continue;
+ }
+ else if (field == LmLogField.Stop)
+ {
+ break;
+ }
+ else if (field == LmLogField.Line)
+ {
+ fieldStr = $"{field}: {reader.ReadInt32()}";
+ }
+ else if (field == LmLogField.DropCount)
+ {
+ fieldStr = $"{field}: {reader.ReadInt64()}";
+ }
+ else if (field == LmLogField.Time)
+ {
+ fieldStr = $"{field}: {reader.ReadInt64()}s";
+ }
+ else if (field < LmLogField.Count)
+ {
+ fieldStr = $"{field}: '{Encoding.UTF8.GetString(reader.ReadBytes(size)).TrimEnd()}'";
+ }
+ else
+ {
+ fieldStr = $"Field{field}: '{Encoding.UTF8.GetString(reader.ReadBytes(size)).TrimEnd()}'";
+ }
- Logger.PrintGuest(LogClass.ServiceLm, text);
+ sb.AppendLine($" {fieldStr}");
}
- return ResultCode.Success;
+ return sb.ToString();
+ }
+
+ private static int ReadEncodedInt(BinaryReader reader)
+ {
+ int result = 0;
+ int position = 0;
+
+ byte encoded;
+
+ do
+ {
+ encoded = reader.ReadByte();
+
+ result += (encoded & 0x7F) << (7 * position);
+
+ position++;
+
+ } while ((encoded & 0x80) != 0);
+
+ return result;
}
}
} \ No newline at end of file