mirror of
https://github.com/ryujinx-mirror/ryujinx.git
synced 2024-10-20 19:21:40 +00:00
9426ef3f06
* Start rewriting nvservices internals TODO: - nvgpu device interface - nvhost generic device interface * Some clean up and fixes - Make sure to remove the fd of a closed channel. - NvFileDevice now doesn't implement Disposable as it was never used. - Rename NvHostCtrlGetConfigurationArgument to GetConfigurationArguments to follow calling convention. - Make sure to check every ioctls magic. * Finalize migration for ioctl standard variant TODO: ioctl2 migration * Implement SubmitGpfifoEx and fix nvdec * Implement Ioctl3 * Implement some ioctl3 required by recent games * Remove unused code and outdated comments * Return valid event handles with QueryEvent Also add an exception for unimplemented event ids. This commit doesn't implement accurately the events, this only define different events for different event ids. * Rename all occurance of FileDevice to DeviceFile * Restub SetClientPid to not cause regressions * Address comments * Remove GlobalStateTable * Address comments * Align variables in ioctl3 * Some missing alignments * GetVaRegionsArguments realign * Make Owner public in NvDeviceFile * Address LDj3SNuD's comments
55 lines
1.7 KiB
C#
55 lines
1.7 KiB
C#
using Ryujinx.HLE.HOS.Services.Nv.NvDrvServices;
|
|
using System;
|
|
using System.Text;
|
|
|
|
namespace Ryujinx.HLE.HOS.Services.Nv.Types
|
|
{
|
|
class NvIoctlNotImplementedException : Exception
|
|
{
|
|
public ServiceCtx Context { get; }
|
|
public NvDeviceFile DeviceFile { get; }
|
|
public NvIoctl Command { get; }
|
|
|
|
public NvIoctlNotImplementedException(ServiceCtx context, NvDeviceFile deviceFile, NvIoctl command)
|
|
: this(context, deviceFile, command, "The ioctl is not implemented.")
|
|
{ }
|
|
|
|
public NvIoctlNotImplementedException(ServiceCtx context, NvDeviceFile deviceFile, NvIoctl command, string message)
|
|
: base(message)
|
|
{
|
|
Context = context;
|
|
DeviceFile = deviceFile;
|
|
Command = command;
|
|
}
|
|
|
|
public override string Message
|
|
{
|
|
get
|
|
{
|
|
return base.Message +
|
|
Environment.NewLine +
|
|
Environment.NewLine +
|
|
BuildMessage();
|
|
}
|
|
}
|
|
|
|
private string BuildMessage()
|
|
{
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
sb.AppendLine($"Device File: {DeviceFile.GetType().Name}");
|
|
sb.AppendLine();
|
|
|
|
sb.AppendLine($"Ioctl (0x{Command.RawValue:x8})");
|
|
sb.AppendLine($"\tNumber: 0x{Command.Number:x8}");
|
|
sb.AppendLine($"\tType: 0x{Command.Type:x8}");
|
|
sb.AppendLine($"\tSize: 0x{Command.Size:x8}");
|
|
sb.AppendLine($"\tDirection: {Command.DirectionValue}");
|
|
|
|
sb.AppendLine("Guest Stack Trace:");
|
|
sb.AppendLine(Context.Thread.GetGuestStackTrace());
|
|
|
|
return sb.ToString();
|
|
}
|
|
}
|
|
}
|