Revert external enum renaming

This commit is contained in:
Alex Barney 2018-12-04 11:55:52 -06:00
commit 34b433628c
5 changed files with 392 additions and 384 deletions

View file

@ -253,7 +253,7 @@ namespace Ryujinx.HLE.HOS.Kernel
ElfDynamicTag tag = (ElfDynamicTag)tagVal; ElfDynamicTag tag = (ElfDynamicTag)tagVal;
if (tag == ElfDynamicTag.Null) if (tag == ElfDynamicTag.DT_NULL)
{ {
break; break;
} }
@ -261,9 +261,9 @@ namespace Ryujinx.HLE.HOS.Kernel
dynamic[tag] = value; dynamic[tag] = value;
} }
if (!dynamic.TryGetValue(ElfDynamicTag.StrTab, out long strTab) || if (!dynamic.TryGetValue(ElfDynamicTag.DT_STRTAB, out long strTab) ||
!dynamic.TryGetValue(ElfDynamicTag.SymTab, out long symTab) || !dynamic.TryGetValue(ElfDynamicTag.DT_SYMTAB, out long symTab) ||
!dynamic.TryGetValue(ElfDynamicTag.SymEnt, out long symEntSize)) !dynamic.TryGetValue(ElfDynamicTag.DT_SYMENT, out long symEntSize))
{ {
return; return;
} }

View file

@ -14,83 +14,83 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
private static Dictionary<WsaError, LinuxError> _errorMap = new Dictionary<WsaError, LinuxError> private static Dictionary<WsaError, LinuxError> _errorMap = new Dictionary<WsaError, LinuxError>
{ {
// WSAEINTR // WSAEINTR
{WsaError.Interrupted, LinuxError.Intr}, {WsaError.WSAEINTR, LinuxError.EINTR},
// WSAEWOULDBLOCK // WSAEWOULDBLOCK
{WsaError.WouldBlock, LinuxError.WouldBlock}, {WsaError.WSAEWOULDBLOCK, LinuxError.EWOULDBLOCK},
// WSAEINPROGRESS // WSAEINPROGRESS
{WsaError.InProgress, LinuxError.InProgress}, {WsaError.WSAEINPROGRESS, LinuxError.EINPROGRESS},
// WSAEALREADY // WSAEALREADY
{WsaError.AlreadyInProgress, LinuxError.Already}, {WsaError.WSAEALREADY, LinuxError.EALREADY},
// WSAENOTSOCK // WSAENOTSOCK
{WsaError.NotSocket, LinuxError.NotSock}, {WsaError.WSAENOTSOCK, LinuxError.ENOTSOCK},
// WSAEDESTADDRREQ // WSAEDESTADDRREQ
{WsaError.DestinationAddressRequired, LinuxError.DestAddrReq}, {WsaError.WSAEDESTADDRREQ, LinuxError.EDESTADDRREQ},
// WSAEMSGSIZE // WSAEMSGSIZE
{WsaError.MessageSize, LinuxError.MsgSize}, {WsaError.WSAEMSGSIZE, LinuxError.EMSGSIZE},
// WSAEPROTOTYPE // WSAEPROTOTYPE
{WsaError.ProtocolType, LinuxError.ProtoType}, {WsaError.WSAEPROTOTYPE, LinuxError.EPROTOTYPE},
// WSAENOPROTOOPT // WSAENOPROTOOPT
{WsaError.ProtocolOption, LinuxError.NoProtoOpt}, {WsaError.WSAENOPROTOOPT, LinuxError.ENOPROTOOPT},
// WSAEPROTONOSUPPORT // WSAEPROTONOSUPPORT
{WsaError.ProtocolNotSupported, LinuxError.ProtoNoSupport}, {WsaError.WSAEPROTONOSUPPORT, LinuxError.EPROTONOSUPPORT},
// WSAESOCKTNOSUPPORT // WSAESOCKTNOSUPPORT
{WsaError.SocketNotSupported, LinuxError.SocktNoSupport}, {WsaError.WSAESOCKTNOSUPPORT, LinuxError.ESOCKTNOSUPPORT},
// WSAEOPNOTSUPP // WSAEOPNOTSUPP
{WsaError.OperationNotSupported, LinuxError.OpNotSupp}, {WsaError.WSAEOPNOTSUPP, LinuxError.EOPNOTSUPP},
// WSAEPFNOSUPPORT // WSAEPFNOSUPPORT
{WsaError.ProtocolFamilyNotSupported, LinuxError.PfNoSupport}, {WsaError.WSAEPFNOSUPPORT, LinuxError.EPFNOSUPPORT},
// WSAEAFNOSUPPORT // WSAEAFNOSUPPORT
{WsaError.AddressFamilyNotSupported, LinuxError.AfNoSupport}, {WsaError.WSAEAFNOSUPPORT, LinuxError.EAFNOSUPPORT},
// WSAEADDRINUSE // WSAEADDRINUSE
{WsaError.AddressAlreadyInUse, LinuxError.AddrInUse}, {WsaError.WSAEADDRINUSE, LinuxError.EADDRINUSE},
// WSAEADDRNOTAVAIL // WSAEADDRNOTAVAIL
{WsaError.AddressNotAvailable, LinuxError.AddrNotAvail}, {WsaError.WSAEADDRNOTAVAIL, LinuxError.EADDRNOTAVAIL},
// WSAENETDOWN // WSAENETDOWN
{WsaError.NetworkDown, LinuxError.NetDown}, {WsaError.WSAENETDOWN, LinuxError.ENETDOWN},
// WSAENETUNREACH // WSAENETUNREACH
{WsaError.NetworkUnreachable, LinuxError.NetUnReach}, {WsaError.WSAENETUNREACH, LinuxError.ENETUNREACH},
// WSAENETRESET // WSAENETRESET
{WsaError.NetworkReset, LinuxError.NetReset}, {WsaError.WSAENETRESET, LinuxError.ENETRESET},
// WSAECONNABORTED // WSAECONNABORTED
{WsaError.ConnectionAborted, LinuxError.ConnAborted}, {WsaError.WSAECONNABORTED, LinuxError.ECONNABORTED},
// WSAECONNRESET // WSAECONNRESET
{WsaError.ConnectionReset, LinuxError.ConnReset}, {WsaError.WSAECONNRESET, LinuxError.ECONNRESET},
// WSAENOBUFS // WSAENOBUFS
{WsaError.NoBufferSpaceAvailable, LinuxError.NoBufs}, {WsaError.WSAENOBUFS, LinuxError.ENOBUFS},
// WSAEISCONN // WSAEISCONN
{WsaError.IsConnected, LinuxError.IsConn}, {WsaError.WSAEISCONN, LinuxError.EISCONN},
// WSAENOTCONN // WSAENOTCONN
{WsaError.NotConnected, LinuxError.NotConn}, {WsaError.WSAENOTCONN, LinuxError.ENOTCONN},
// WSAESHUTDOWN // WSAESHUTDOWN
{WsaError.Shutdown, LinuxError.Shutdown}, {WsaError.WSAESHUTDOWN, LinuxError.ESHUTDOWN},
// WSAETOOMANYREFS // WSAETOOMANYREFS
{WsaError.TooManyReferences, LinuxError.TooManyRefs}, {WsaError.WSAETOOMANYREFS, LinuxError.ETOOMANYREFS},
// WSAETIMEDOUT // WSAETIMEDOUT
{WsaError.TimedOut, LinuxError.TimedOut}, {WsaError.WSAETIMEDOUT, LinuxError.ETIMEDOUT},
// WSAECONNREFUSED // WSAECONNREFUSED
{WsaError.ConnectionRefused, LinuxError.ConnRefused}, {WsaError.WSAECONNREFUSED, LinuxError.ECONNREFUSED},
// WSAELOOP // WSAELOOP
{WsaError.Loop, LinuxError.Loop}, {WsaError.WSAELOOP, LinuxError.ELOOP},
// WSAENAMETOOLONG // WSAENAMETOOLONG
{WsaError.NameTooLong, LinuxError.NameTooLong}, {WsaError.WSAENAMETOOLONG, LinuxError.ENAMETOOLONG},
// WSAEHOSTDOWN // WSAEHOSTDOWN
{WsaError.HostDown, LinuxError.HostDown}, {WsaError.WSAEHOSTDOWN, LinuxError.EHOSTDOWN},
// WSAEHOSTUNREACH // WSAEHOSTUNREACH
{WsaError.HostUnreachable, LinuxError.HostUnReach}, {WsaError.WSAEHOSTUNREACH, LinuxError.EHOSTUNREACH},
// WSAENOTEMPTY // WSAENOTEMPTY
{WsaError.NotEmpty, LinuxError.NotEmpty}, {WsaError.WSAENOTEMPTY, LinuxError.ENOTEMPTY},
// WSAEUSERS // WSAEUSERS
{WsaError.UserQuota, LinuxError.Users}, {WsaError.WSAEUSERS, LinuxError.EUSERS},
// WSAEDQUOT // WSAEDQUOT
{WsaError.DiskQuota, LinuxError.DQuot}, {WsaError.WSAEDQUOT, LinuxError.EDQUOT},
// WSAESTALE // WSAESTALE
{WsaError.Stale, LinuxError.Stale}, {WsaError.WSAESTALE, LinuxError.ESTALE},
// WSAEREMOTE // WSAEREMOTE
{WsaError.Remote, LinuxError.Remote}, {WsaError.WSAEREMOTE, LinuxError.EREMOTE},
// WSAEINVAL // WSAEINVAL
{WsaError.InvalidArgument, LinuxError.InVal}, {WsaError.WSAEINVAL, LinuxError.EINVAL},
// WSAEFAULT // WSAEFAULT
{WsaError.Fault, LinuxError.Fault}, {WsaError.WSAEFAULT, LinuxError.EFAULT},
// NOERROR // NOERROR
{0, 0} {0, 0}
}; };
@ -159,7 +159,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
private long WriteBsdResult(ServiceCtx context, int result, LinuxError errorCode = 0) private long WriteBsdResult(ServiceCtx context, int result, LinuxError errorCode = 0)
{ {
if (errorCode != LinuxError.Success) if (errorCode != LinuxError.SUCCESS)
{ {
result = -1; result = -1;
} }
@ -182,7 +182,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
private LinuxError SetResultErrno(Socket socket, int result) private LinuxError SetResultErrno(Socket socket, int result)
{ {
return result == 0 && !socket.Blocking ? LinuxError.WouldBlock : LinuxError.Success; return result == 0 && !socket.Blocking ? LinuxError.EWOULDBLOCK : LinuxError.SUCCESS;
} }
private AddressFamily ConvertFromBsd(int domain) private AddressFamily ConvertFromBsd(int domain)
@ -204,13 +204,13 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
if (domain == AddressFamily.Unknown) if (domain == AddressFamily.Unknown)
{ {
return WriteBsdResult(context, -1, LinuxError.ProtoNoSupport); return WriteBsdResult(context, -1, LinuxError.EPROTONOSUPPORT);
} }
else if ((type == SocketType.Seqpacket || type == SocketType.Raw) && !_isPrivileged) else if ((type == SocketType.Seqpacket || type == SocketType.Raw) && !_isPrivileged)
{ {
if (domain != AddressFamily.InterNetwork || type != SocketType.Raw || protocol != ProtocolType.Icmp) if (domain != AddressFamily.InterNetwork || type != SocketType.Raw || protocol != ProtocolType.Icmp)
{ {
return WriteBsdResult(context, -1, LinuxError.NoEnt); return WriteBsdResult(context, -1, LinuxError.ENOENT);
} }
} }
@ -314,7 +314,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
byte[] rawPath = context.Memory.ReadBytes(bufferPosition, bufferSize); byte[] rawPath = context.Memory.ReadBytes(bufferPosition, bufferSize);
string path = Encoding.ASCII.GetString(rawPath); string path = Encoding.ASCII.GetString(rawPath);
WriteBsdResult(context, -1, LinuxError.OpNotSupp); WriteBsdResult(context, -1, LinuxError.EOPNOTSUPP);
Logger.PrintStub(LogClass.ServiceBsd, $"Stubbed. Path: {path} - " + Logger.PrintStub(LogClass.ServiceBsd, $"Stubbed. Path: {path} - " +
$"Flags: {flags}"); $"Flags: {flags}");
@ -325,7 +325,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
// Select(u32 nfds, nn::socket::timeout timeout, buffer<nn::socket::fd_set, 0x21, 0> readfds_in, buffer<nn::socket::fd_set, 0x21, 0> writefds_in, buffer<nn::socket::fd_set, 0x21, 0> errorfds_in) -> (i32 ret, u32 bsd_errno, buffer<nn::socket::fd_set, 0x22, 0> readfds_out, buffer<nn::socket::fd_set, 0x22, 0> writefds_out, buffer<nn::socket::fd_set, 0x22, 0> errorfds_out) // Select(u32 nfds, nn::socket::timeout timeout, buffer<nn::socket::fd_set, 0x21, 0> readfds_in, buffer<nn::socket::fd_set, 0x21, 0> writefds_in, buffer<nn::socket::fd_set, 0x21, 0> errorfds_in) -> (i32 ret, u32 bsd_errno, buffer<nn::socket::fd_set, 0x22, 0> readfds_out, buffer<nn::socket::fd_set, 0x22, 0> writefds_out, buffer<nn::socket::fd_set, 0x22, 0> errorfds_out)
public long Select(ServiceCtx context) public long Select(ServiceCtx context)
{ {
WriteBsdResult(context, -1, LinuxError.OpNotSupp); WriteBsdResult(context, -1, LinuxError.EOPNOTSUPP);
Logger.PrintStub(LogClass.ServiceBsd, $"Stubbed."); Logger.PrintStub(LogClass.ServiceBsd, $"Stubbed.");
@ -343,7 +343,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
if (timeout < -1 || fdsCount < 0 || (fdsCount * 8) > bufferSize) if (timeout < -1 || fdsCount < 0 || (fdsCount * 8) > bufferSize)
{ {
return WriteBsdResult(context, -1, LinuxError.InVal); return WriteBsdResult(context, -1, LinuxError.EINVAL);
} }
PollEvent[] events = new PollEvent[fdsCount]; PollEvent[] events = new PollEvent[fdsCount];
@ -356,8 +356,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
if (socket == null) if (socket == null)
{ {
return WriteBsdResult(context, -1, LinuxError.BadF); return WriteBsdResult(context, -1, LinuxError.EBADF);}
}
PollEvent.EventTypeMask inputEvents = (PollEvent.EventTypeMask)context.Memory.ReadInt16(bufferPosition + i * 8 + 4); PollEvent.EventTypeMask inputEvents = (PollEvent.EventTypeMask)context.Memory.ReadInt16(bufferPosition + i * 8 + 4);
PollEvent.EventTypeMask outputEvents = (PollEvent.EventTypeMask)context.Memory.ReadInt16(bufferPosition + i * 8 + 6); PollEvent.EventTypeMask outputEvents = (PollEvent.EventTypeMask)context.Memory.ReadInt16(bufferPosition + i * 8 + 6);
@ -406,7 +405,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
if (!isValidEvent) if (!isValidEvent)
{ {
Logger.PrintWarning(LogClass.ServiceBsd, $"Unsupported Poll input event type: {Event.InputEvents}"); Logger.PrintWarning(LogClass.ServiceBsd, $"Unsupported Poll input event type: {Event.InputEvents}");
return WriteBsdResult(context, -1, LinuxError.InVal); return WriteBsdResult(context, -1, LinuxError.EINVAL);
} }
} }
@ -455,13 +454,13 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
context.Memory.WriteInt16(bufferPosition + i * 8 + 6, (short)outputEvents); context.Memory.WriteInt16(bufferPosition + i * 8 + 6, (short)outputEvents);
} }
return WriteBsdResult(context, readEvents.Count + writeEvents.Count + errorEvents.Count, LinuxError.Success); return WriteBsdResult(context, readEvents.Count + writeEvents.Count + errorEvents.Count, LinuxError.SUCCESS);
} }
// Sysctl(buffer<unknown, 0x21, 0>, buffer<unknown, 0x21, 0>) -> (i32 ret, u32 bsd_errno, u32, buffer<unknown, 0x22, 0>) // Sysctl(buffer<unknown, 0x21, 0>, buffer<unknown, 0x21, 0>) -> (i32 ret, u32 bsd_errno, u32, buffer<unknown, 0x22, 0>)
public long Sysctl(ServiceCtx context) public long Sysctl(ServiceCtx context)
{ {
WriteBsdResult(context, -1, LinuxError.OpNotSupp); WriteBsdResult(context, -1, LinuxError.EOPNOTSUPP);
Logger.PrintStub(LogClass.ServiceBsd, $"Stubbed."); Logger.PrintStub(LogClass.ServiceBsd, $"Stubbed.");
@ -476,7 +475,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
(long receivePosition, long receiveLength) = context.Request.GetBufferType0x22(); (long receivePosition, long receiveLength) = context.Request.GetBufferType0x22();
LinuxError errno = LinuxError.BadF; LinuxError errno = LinuxError.EBADF;
BsdSocket socket = RetrieveSocket(socketFd); BsdSocket socket = RetrieveSocket(socketFd);
int result = -1; int result = -1;
@ -486,7 +485,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
&& (socketFlags & SocketFlags.Peek) == 0) && (socketFlags & SocketFlags.Peek) == 0)
{ {
Logger.PrintWarning(LogClass.ServiceBsd, $"Unsupported Recv flags: {socketFlags}"); Logger.PrintWarning(LogClass.ServiceBsd, $"Unsupported Recv flags: {socketFlags}");
return WriteBsdResult(context, -1, LinuxError.OpNotSupp); return WriteBsdResult(context, -1, LinuxError.EOPNOTSUPP);
} }
byte[] receivedBuffer = new byte[receiveLength]; byte[] receivedBuffer = new byte[receiveLength];
@ -517,7 +516,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
(long sockAddrInPosition, long sockAddrInSize) = context.Request.GetBufferType0x21(); (long sockAddrInPosition, long sockAddrInSize) = context.Request.GetBufferType0x21();
(long sockAddrOutPosition, long sockAddrOutSize) = context.Request.GetBufferType0x22(1); (long sockAddrOutPosition, long sockAddrOutSize) = context.Request.GetBufferType0x22(1);
LinuxError errno = LinuxError.BadF; LinuxError errno = LinuxError.EBADF;
BsdSocket socket = RetrieveSocket(socketFd); BsdSocket socket = RetrieveSocket(socketFd);
int result = -1; int result = -1;
@ -528,7 +527,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
{ {
Logger.PrintWarning(LogClass.ServiceBsd, $"Unsupported Recv flags: {socketFlags}"); Logger.PrintWarning(LogClass.ServiceBsd, $"Unsupported Recv flags: {socketFlags}");
return WriteBsdResult(context, -1, LinuxError.OpNotSupp); return WriteBsdResult(context, -1, LinuxError.EOPNOTSUPP);
} }
byte[] receivedBuffer = new byte[receiveLength]; byte[] receivedBuffer = new byte[receiveLength];
@ -559,7 +558,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
(long sendPosition, long sendSize) = context.Request.GetBufferType0x21(); (long sendPosition, long sendSize) = context.Request.GetBufferType0x21();
LinuxError errno = LinuxError.BadF; LinuxError errno = LinuxError.EBADF;
BsdSocket socket = RetrieveSocket(socketFd); BsdSocket socket = RetrieveSocket(socketFd);
int result = -1; int result = -1;
@ -570,7 +569,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
{ {
Logger.PrintWarning(LogClass.ServiceBsd, $"Unsupported Send flags: {socketFlags}"); Logger.PrintWarning(LogClass.ServiceBsd, $"Unsupported Send flags: {socketFlags}");
return WriteBsdResult(context, -1, LinuxError.OpNotSupp); return WriteBsdResult(context, -1, LinuxError.EOPNOTSUPP);
} }
byte[] sendBuffer = context.Memory.ReadBytes(sendPosition, sendSize); byte[] sendBuffer = context.Memory.ReadBytes(sendPosition, sendSize);
@ -599,7 +598,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
(long sendPosition, long sendSize) = context.Request.GetBufferType0x21(); (long sendPosition, long sendSize) = context.Request.GetBufferType0x21();
(long bufferPosition, long bufferSize) = context.Request.GetBufferType0x21(1); (long bufferPosition, long bufferSize) = context.Request.GetBufferType0x21(1);
LinuxError errno = LinuxError.BadF; LinuxError errno = LinuxError.EBADF;
BsdSocket socket = RetrieveSocket(socketFd); BsdSocket socket = RetrieveSocket(socketFd);
int result = -1; int result = -1;
@ -610,7 +609,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
{ {
Logger.PrintWarning(LogClass.ServiceBsd, $"Unsupported Send flags: {socketFlags}"); Logger.PrintWarning(LogClass.ServiceBsd, $"Unsupported Send flags: {socketFlags}");
return WriteBsdResult(context, -1, LinuxError.OpNotSupp); return WriteBsdResult(context, -1, LinuxError.EOPNOTSUPP);
} }
byte[] sendBuffer = context.Memory.ReadBytes(sendPosition, sendSize); byte[] sendBuffer = context.Memory.ReadBytes(sendPosition, sendSize);
@ -638,12 +637,12 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
(long bufferPos, long bufferSize) = context.Request.GetBufferType0x22(); (long bufferPos, long bufferSize) = context.Request.GetBufferType0x22();
LinuxError errno = LinuxError.BadF; LinuxError errno = LinuxError.EBADF;
BsdSocket socket = RetrieveSocket(socketFd); BsdSocket socket = RetrieveSocket(socketFd);
if (socket != null) if (socket != null)
{ {
errno = LinuxError.Success; errno = LinuxError.SUCCESS;
Socket newSocket = null; Socket newSocket = null;
@ -656,11 +655,11 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
errno = ConvertError((WsaError)exception.ErrorCode); errno = ConvertError((WsaError)exception.ErrorCode);
} }
if (newSocket == null && errno == LinuxError.Success) if (newSocket == null && errno == LinuxError.SUCCESS)
{ {
errno = LinuxError.WouldBlock; errno = LinuxError.EWOULDBLOCK;
} }
else if (errno == LinuxError.Success) else if (errno == LinuxError.SUCCESS)
{ {
BsdSocket newBsdSocket = new BsdSocket BsdSocket newBsdSocket = new BsdSocket
{ {
@ -692,12 +691,12 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
(long bufferPos, long bufferSize) = context.Request.GetBufferType0x21(); (long bufferPos, long bufferSize) = context.Request.GetBufferType0x21();
LinuxError errno = LinuxError.BadF; LinuxError errno = LinuxError.EBADF;
BsdSocket socket = RetrieveSocket(socketFd); BsdSocket socket = RetrieveSocket(socketFd);
if (socket != null) if (socket != null)
{ {
errno = LinuxError.Success; errno = LinuxError.SUCCESS;
try try
{ {
@ -721,12 +720,12 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
(long bufferPos, long bufferSize) = context.Request.GetBufferType0x21(); (long bufferPos, long bufferSize) = context.Request.GetBufferType0x21();
LinuxError errno = LinuxError.BadF; LinuxError errno = LinuxError.EBADF;
BsdSocket socket = RetrieveSocket(socketFd); BsdSocket socket = RetrieveSocket(socketFd);
if (socket != null) if (socket != null)
{ {
errno = LinuxError.Success; errno = LinuxError.SUCCESS;
try try
{ {
IPEndPoint endPoint = ParseSockAddr(context, bufferPos, bufferSize); IPEndPoint endPoint = ParseSockAddr(context, bufferPos, bufferSize);
@ -749,12 +748,12 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
(long bufferPos, long bufferSize) = context.Request.GetBufferType0x22(); (long bufferPos, long bufferSize) = context.Request.GetBufferType0x22();
LinuxError errno = LinuxError.BadF; LinuxError errno = LinuxError.EBADF;
BsdSocket socket = RetrieveSocket(socketFd); BsdSocket socket = RetrieveSocket(socketFd);
if (socket != null) if (socket != null)
{ {
errno = LinuxError.Success; errno = LinuxError.SUCCESS;
WriteSockAddr(context, bufferPos, socket, true); WriteSockAddr(context, bufferPos, socket, true);
WriteBsdResult(context, 0, errno); WriteBsdResult(context, 0, errno);
@ -771,12 +770,12 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
(long bufferPos, long bufferSize) = context.Request.GetBufferType0x22(); (long bufferPos, long bufferSize) = context.Request.GetBufferType0x22();
LinuxError errno = LinuxError.BadF; LinuxError errno = LinuxError.EBADF;
BsdSocket socket = RetrieveSocket(socketFd); BsdSocket socket = RetrieveSocket(socketFd);
if (socket != null) if (socket != null)
{ {
errno = LinuxError.Success; errno = LinuxError.SUCCESS;
WriteSockAddr(context, bufferPos, socket, false); WriteSockAddr(context, bufferPos, socket, false);
WriteBsdResult(context, 0, errno); WriteBsdResult(context, 0, errno);
@ -795,12 +794,12 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
(long bufferPosition, long bufferSize) = context.Request.GetBufferType0x22(); (long bufferPosition, long bufferSize) = context.Request.GetBufferType0x22();
LinuxError errno = LinuxError.BadF; LinuxError errno = LinuxError.EBADF;
BsdSocket socket = RetrieveSocket(socketFd); BsdSocket socket = RetrieveSocket(socketFd);
if (socket != null) if (socket != null)
{ {
errno = LinuxError.NoProtoOpt; errno = LinuxError.ENOPROTOOPT;
if (level == 0xFFFF) if (level == 0xFFFF)
{ {
@ -821,12 +820,12 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
int socketFd = context.RequestData.ReadInt32(); int socketFd = context.RequestData.ReadInt32();
int backlog = context.RequestData.ReadInt32(); int backlog = context.RequestData.ReadInt32();
LinuxError errno = LinuxError.BadF; LinuxError errno = LinuxError.EBADF;
BsdSocket socket = RetrieveSocket(socketFd); BsdSocket socket = RetrieveSocket(socketFd);
if (socket != null) if (socket != null)
{ {
errno = LinuxError.Success; errno = LinuxError.SUCCESS;
try try
{ {
@ -848,7 +847,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
BsdIoctl cmd = (BsdIoctl)context.RequestData.ReadInt32(); BsdIoctl cmd = (BsdIoctl)context.RequestData.ReadInt32();
int bufferCount = context.RequestData.ReadInt32(); int bufferCount = context.RequestData.ReadInt32();
LinuxError errno = LinuxError.BadF; LinuxError errno = LinuxError.EBADF;
BsdSocket socket = RetrieveSocket(socketFd); BsdSocket socket = RetrieveSocket(socketFd);
if (socket != null) if (socket != null)
@ -856,7 +855,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
switch (cmd) switch (cmd)
{ {
case BsdIoctl.AtMark: case BsdIoctl.AtMark:
errno = LinuxError.Success; errno = LinuxError.SUCCESS;
(long bufferPosition, long bufferSize) = context.Request.GetBufferType0x22(); (long bufferPosition, long bufferSize) = context.Request.GetBufferType0x22();
@ -865,7 +864,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
break; break;
default: default:
errno = LinuxError.OpNotSupp; errno = LinuxError.EOPNOTSUPP;
Logger.PrintWarning(LogClass.ServiceBsd, $"Unsupported Ioctl Cmd: {cmd}"); Logger.PrintWarning(LogClass.ServiceBsd, $"Unsupported Ioctl Cmd: {cmd}");
break; break;
@ -883,12 +882,12 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
int arg = context.RequestData.ReadInt32(); int arg = context.RequestData.ReadInt32();
int result = 0; int result = 0;
LinuxError errno = LinuxError.BadF; LinuxError errno = LinuxError.EBADF;
BsdSocket socket = RetrieveSocket(socketFd); BsdSocket socket = RetrieveSocket(socketFd);
if (socket != null) if (socket != null)
{ {
errno = LinuxError.Success; errno = LinuxError.SUCCESS;
if (cmd == 0x3) if (cmd == 0x3)
{ {
@ -901,7 +900,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
} }
else else
{ {
errno = LinuxError.OpNotSupp; errno = LinuxError.EOPNOTSUPP;
} }
} }
@ -931,18 +930,18 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
socket.Handle.GetSocketOption(SocketOptionLevel.Socket, optionName, optionValue); socket.Handle.GetSocketOption(SocketOptionLevel.Socket, optionName, optionValue);
context.Memory.WriteBytes(optionValuePosition, optionValue); context.Memory.WriteBytes(optionValuePosition, optionValue);
return LinuxError.Success; return LinuxError.SUCCESS;
case (SocketOptionName)0x200: case (SocketOptionName)0x200:
socket.Handle.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, optionValue); socket.Handle.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, optionValue);
context.Memory.WriteBytes(optionValuePosition, optionValue); context.Memory.WriteBytes(optionValuePosition, optionValue);
return LinuxError.Success; return LinuxError.SUCCESS;
default: default:
Logger.PrintWarning(LogClass.ServiceBsd, $"Unsupported SetSockOpt OptionName: {optionName}"); Logger.PrintWarning(LogClass.ServiceBsd, $"Unsupported SetSockOpt OptionName: {optionName}");
return LinuxError.OpNotSupp; return LinuxError.EOPNOTSUPP;
} }
} }
catch (SocketException exception) catch (SocketException exception)
@ -971,23 +970,23 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
case SocketOptionName.ReuseAddress: case SocketOptionName.ReuseAddress:
socket.Handle.SetSocketOption(SocketOptionLevel.Socket, optionName, context.Memory.ReadInt32(optionValuePosition)); socket.Handle.SetSocketOption(SocketOptionLevel.Socket, optionName, context.Memory.ReadInt32(optionValuePosition));
return LinuxError.Success; return LinuxError.SUCCESS;
case (SocketOptionName)0x200: case (SocketOptionName)0x200:
socket.Handle.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, context.Memory.ReadInt32(optionValuePosition)); socket.Handle.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, context.Memory.ReadInt32(optionValuePosition));
return LinuxError.Success; return LinuxError.SUCCESS;
case SocketOptionName.Linger: case SocketOptionName.Linger:
socket.Handle.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger, socket.Handle.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger,
new LingerOption(context.Memory.ReadInt32(optionValuePosition) != 0, context.Memory.ReadInt32(optionValuePosition + 4))); new LingerOption(context.Memory.ReadInt32(optionValuePosition) != 0, context.Memory.ReadInt32(optionValuePosition + 4)));
return LinuxError.Success; return LinuxError.SUCCESS;
default: default:
Logger.PrintWarning(LogClass.ServiceBsd, $"Unsupported SetSockOpt OptionName: {optionName}"); Logger.PrintWarning(LogClass.ServiceBsd, $"Unsupported SetSockOpt OptionName: {optionName}");
return LinuxError.OpNotSupp; return LinuxError.EOPNOTSUPP;
} }
} }
catch (SocketException exception) catch (SocketException exception)
@ -1005,12 +1004,12 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
(long bufferPos, long bufferSize) = context.Request.GetBufferType0x21(); (long bufferPos, long bufferSize) = context.Request.GetBufferType0x21();
LinuxError errno = LinuxError.BadF; LinuxError errno = LinuxError.EBADF;
BsdSocket socket = RetrieveSocket(socketFd); BsdSocket socket = RetrieveSocket(socketFd);
if (socket != null) if (socket != null)
{ {
errno = LinuxError.NoProtoOpt; errno = LinuxError.ENOPROTOOPT;
if (level == 0xFFFF) if (level == 0xFFFF)
{ {
@ -1031,16 +1030,16 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
int socketFd = context.RequestData.ReadInt32(); int socketFd = context.RequestData.ReadInt32();
int how = context.RequestData.ReadInt32(); int how = context.RequestData.ReadInt32();
LinuxError errno = LinuxError.BadF; LinuxError errno = LinuxError.EBADF;
BsdSocket socket = RetrieveSocket(socketFd); BsdSocket socket = RetrieveSocket(socketFd);
if (socket != null) if (socket != null)
{ {
errno = LinuxError.InVal; errno = LinuxError.EINVAL;
if (how >= 0 && how <= 2) if (how >= 0 && how <= 2)
{ {
errno = LinuxError.Success; errno = LinuxError.SUCCESS;
try try
{ {
@ -1061,11 +1060,11 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
{ {
int how = context.RequestData.ReadInt32(); int how = context.RequestData.ReadInt32();
LinuxError errno = LinuxError.InVal; LinuxError errno = LinuxError.EINVAL;
if (how >= 0 && how <= 2) if (how >= 0 && how <= 2)
{ {
errno = LinuxError.Success; errno = LinuxError.SUCCESS;
foreach (BsdSocket socket in _sockets) foreach (BsdSocket socket in _sockets)
{ {
@ -1094,7 +1093,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
(long sendPosition, long sendSize) = context.Request.GetBufferType0x21(); (long sendPosition, long sendSize) = context.Request.GetBufferType0x21();
LinuxError errno = LinuxError.BadF; LinuxError errno = LinuxError.EBADF;
BsdSocket socket = RetrieveSocket(socketFd); BsdSocket socket = RetrieveSocket(socketFd);
int result = -1; int result = -1;
@ -1123,7 +1122,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
(long receivePosition, long receiveLength) = context.Request.GetBufferType0x22(); (long receivePosition, long receiveLength) = context.Request.GetBufferType0x22();
LinuxError errno = LinuxError.BadF; LinuxError errno = LinuxError.EBADF;
BsdSocket socket = RetrieveSocket(socketFd); BsdSocket socket = RetrieveSocket(socketFd);
int result = -1; int result = -1;
@ -1150,7 +1149,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
{ {
int socketFd = context.RequestData.ReadInt32(); int socketFd = context.RequestData.ReadInt32();
LinuxError errno = LinuxError.BadF; LinuxError errno = LinuxError.EBADF;
BsdSocket socket = RetrieveSocket(socketFd); BsdSocket socket = RetrieveSocket(socketFd);
if (socket != null) if (socket != null)
@ -1159,7 +1158,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
_sockets[socketFd] = null; _sockets[socketFd] = null;
errno = LinuxError.Success; errno = LinuxError.SUCCESS;
} }
return WriteBsdResult(context, 0, errno); return WriteBsdResult(context, 0, errno);
@ -1171,12 +1170,12 @@ namespace Ryujinx.HLE.HOS.Services.Bsd
int socketFd = context.RequestData.ReadInt32(); int socketFd = context.RequestData.ReadInt32();
ulong reserved = context.RequestData.ReadUInt64(); ulong reserved = context.RequestData.ReadUInt64();
LinuxError errno = LinuxError.NoEnt; LinuxError errno = LinuxError.ENOENT;
int newSockFd = -1; int newSockFd = -1;
if (_isPrivileged) if (_isPrivileged)
{ {
errno = LinuxError.BadF; errno = LinuxError.EBADF;
BsdSocket oldSocket = RetrieveSocket(socketFd); BsdSocket oldSocket = RetrieveSocket(socketFd);

View file

@ -1,72 +1,75 @@
using System.Diagnostics.CodeAnalysis;
namespace Ryujinx.HLE.Loaders.Elf namespace Ryujinx.HLE.Loaders.Elf
{ {
internal enum ElfDynamicTag [SuppressMessage("ReSharper", "InconsistentNaming")]
enum ElfDynamicTag
{ {
Null = 0, DT_NULL = 0,
Needed = 1, DT_NEEDED = 1,
PltRelSz = 2, DT_PLTRELSZ = 2,
PltGoz = 3, DT_PLTGOT = 3,
Hash = 4, DT_HASH = 4,
StrTab = 5, DT_STRTAB = 5,
SymTab = 6, DT_SYMTAB = 6,
RelA = 7, DT_RELA = 7,
RelASz = 8, DT_RELASZ = 8,
RelAEnt = 9, DT_RELAENT = 9,
StrSz = 10, DT_STRSZ = 10,
SymEnt = 11, DT_SYMENT = 11,
Init = 12, DT_INIT = 12,
Fini = 13, DT_FINI = 13,
SoName = 14, DT_SONAME = 14,
RPath = 15, DT_RPATH = 15,
Symbolic = 16, DT_SYMBOLIC = 16,
Rel = 17, DT_REL = 17,
RelSz = 18, DT_RELSZ = 18,
RelEnt = 19, DT_RELENT = 19,
PltRel = 20, DT_PLTREL = 20,
Debug = 21, DT_DEBUG = 21,
TextRel = 22, DT_TEXTREL = 22,
JmpRel = 23, DT_JMPREL = 23,
BindNow = 24, DT_BIND_NOW = 24,
InitArray = 25, DT_INIT_ARRAY = 25,
FiniArray = 26, DT_FINI_ARRAY = 26,
InitArraySz = 27, DT_INIT_ARRAYSZ = 27,
FiniArraySz = 28, DT_FINI_ARRAYSZ = 28,
RunPath = 29, DT_RUNPATH = 29,
Flags = 30, DT_FLAGS = 30,
Encoding = 32, DT_ENCODING = 32,
PreInitArray = 32, DT_PREINIT_ARRAY = 32,
PreInitArraySz = 33, DT_PREINIT_ARRAYSZ = 33,
GnuPrelinked = 0x6ffffdf5, DT_GNU_PRELINKED = 0x6ffffdf5,
GnuConflictSz = 0x6ffffdf6, DT_GNU_CONFLICTSZ = 0x6ffffdf6,
GnuLibListSz = 0x6ffffdf7, DT_GNU_LIBLISTSZ = 0x6ffffdf7,
Checksum = 0x6ffffdf8, DT_CHECKSUM = 0x6ffffdf8,
PltPadSz = 0x6ffffdf9, DT_PLTPADSZ = 0x6ffffdf9,
MoveEnt = 0x6ffffdfa, DT_MOVEENT = 0x6ffffdfa,
MoveSz = 0x6ffffdfb, DT_MOVESZ = 0x6ffffdfb,
Feature1 = 0x6ffffdfc, DT_FEATURE_1 = 0x6ffffdfc,
PosFlag1 = 0x6ffffdfd, DT_POSFLAG_1 = 0x6ffffdfd,
SymInSz = 0x6ffffdfe, DT_SYMINSZ = 0x6ffffdfe,
SymInEnt = 0x6ffffdff, DT_SYMINENT = 0x6ffffdff,
GnuHash = 0x6ffffef5, DT_GNU_HASH = 0x6ffffef5,
TlsDescPlt = 0x6ffffef6, DT_TLSDESC_PLT = 0x6ffffef6,
TlsDescGot = 0x6ffffef7, DT_TLSDESC_GOT = 0x6ffffef7,
GnuConflict = 0x6ffffef8, DT_GNU_CONFLICT = 0x6ffffef8,
GnuLibList = 0x6ffffef9, DT_GNU_LIBLIST = 0x6ffffef9,
Config = 0x6ffffefa, DT_CONFIG = 0x6ffffefa,
DepAudit = 0x6ffffefb, DT_DEPAUDIT = 0x6ffffefb,
Audit = 0x6ffffefc, DT_AUDIT = 0x6ffffefc,
PltPad = 0x6ffffefd, DT_PLTPAD = 0x6ffffefd,
MoveTab = 0x6ffffefe, DT_MOVETAB = 0x6ffffefe,
SymInfo = 0x6ffffeff, DT_SYMINFO = 0x6ffffeff,
VerSym = 0x6ffffff0, DT_VERSYM = 0x6ffffff0,
RelaCount = 0x6ffffff9, DT_RELACOUNT = 0x6ffffff9,
RelCount = 0x6ffffffa, DT_RELCOUNT = 0x6ffffffa,
Flags1 = 0x6ffffffb, DT_FLAGS_1 = 0x6ffffffb,
VerDef = 0x6ffffffc, DT_VERDEF = 0x6ffffffc,
VerDefNum = 0x6ffffffd, DT_VERDEFNUM = 0x6ffffffd,
VerNeed = 0x6ffffffe, DT_VERNEED = 0x6ffffffe,
VerNeedNum = 0x6fffffff, DT_VERNEEDNUM = 0x6fffffff,
Auxiliary = 0x7ffffffd, DT_AUXILIARY = 0x7ffffffd,
Filter = 0x7fffffff DT_FILTER = 0x7fffffff
} }
} }

View file

@ -1,45 +1,48 @@
using System.Diagnostics.CodeAnalysis;
namespace Ryujinx.HLE.Utilities namespace Ryujinx.HLE.Utilities
{ {
internal enum LinuxError [SuppressMessage("ReSharper", "InconsistentNaming")]
enum LinuxError
{ {
Success = 0, SUCCESS = 0,
Perm = 1 /* Operation not permitted */, EPERM = 1 /* Operation not permitted */,
NoEnt = 2 /* No such file or directory */, ENOENT = 2 /* No such file or directory */,
Srch = 3 /* No such process */, ESRCH = 3 /* No such process */,
Intr = 4 /* Interrupted system call */, EINTR = 4 /* Interrupted system call */,
Io = 5 /* I/O error */, EIO = 5 /* I/O error */,
NxIo = 6 /* No such device or address */, ENXIO = 6 /* No such device or address */,
TooBig = 7 /* Argument list too long */, E2BIG = 7 /* Argument list too long */,
NoExec = 8 /* Exec format error */, ENOEXEC = 8 /* Exec format error */,
BadF = 9 /* Bad file number */, EBADF = 9 /* Bad file number */,
Child = 10 /* No child processes */, ECHILD = 10 /* No child processes */,
Again = 11 /* Try again */, EAGAIN = 11 /* Try again */,
NoMem = 12 /* Out of memory */, ENOMEM = 12 /* Out of memory */,
Acces = 13 /* Permission denied */, EACCES = 13 /* Permission denied */,
Fault = 14 /* Bad address */, EFAULT = 14 /* Bad address */,
NotBlk = 15 /* Block device required */, ENOTBLK = 15 /* Block device required */,
Busy = 16 /* Device or resource busy */, EBUSY = 16 /* Device or resource busy */,
Exist = 17 /* File exists */, EEXIST = 17 /* File exists */,
XDev = 18 /* Cross-device link */, EXDEV = 18 /* Cross-device link */,
NoDev = 19 /* No such device */, ENODEV = 19 /* No such device */,
NotDir = 20 /* Not a directory */, ENOTDIR = 20 /* Not a directory */,
IsDir = 21 /* Is a directory */, EISDIR = 21 /* Is a directory */,
InVal = 22 /* Invalid argument */, EINVAL = 22 /* Invalid argument */,
NFile = 23 /* File table overflow */, ENFILE = 23 /* File table overflow */,
MFile = 24 /* Too many open files */, EMFILE = 24 /* Too many open files */,
NoTty = 25 /* Not a typewriter */, ENOTTY = 25 /* Not a typewriter */,
TxtBsy = 26 /* Text file busy */, ETXTBSY = 26 /* Text file busy */,
FBig = 27 /* File too large */, EFBIG = 27 /* File too large */,
NoSpc = 28 /* No space left on device */, ENOSPC = 28 /* No space left on device */,
SPipe = 29 /* Illegal seek */, ESPIPE = 29 /* Illegal seek */,
RoFs = 30 /* Read-only file system */, EROFS = 30 /* Read-only file system */,
MLink = 31 /* Too many links */, EMLINK = 31 /* Too many links */,
Pipe = 32 /* Broken pipe */, EPIPE = 32 /* Broken pipe */,
Dom = 33 /* Math argument out of domain of func */, EDOM = 33 /* Math argument out of domain of func */,
Range = 34 /* Math result not representable */, ERANGE = 34 /* Math result not representable */,
DeadLk = 35 /* Resource deadlock would occur */, EDEADLK = 35 /* Resource deadlock would occur */,
NameTooLong = 36 /* File name too long */, ENAMETOOLONG = 36 /* File name too long */,
NoLck = 37 /* No record locks available */, ENOLCK = 37 /* No record locks available */,
/* /*
* This error code is special: arch syscall entry code will return * This error code is special: arch syscall entry code will return
@ -48,105 +51,105 @@ namespace Ryujinx.HLE.Utilities
* failures due to attempts to use a nonexistent syscall, syscall * failures due to attempts to use a nonexistent syscall, syscall
* implementations should refrain from returning -ENOSYS. * implementations should refrain from returning -ENOSYS.
*/ */
NoSys = 38 /* Invalid system call number */, ENOSYS = 38 /* Invalid system call number */,
NotEmpty = 39 /* Directory not empty */, ENOTEMPTY = 39 /* Directory not empty */,
Loop = 40 /* Too many symbolic links encountered */, ELOOP = 40 /* Too many symbolic links encountered */,
WouldBlock = Again /* Operation would block */, EWOULDBLOCK = EAGAIN /* Operation would block */,
NoMsg = 42 /* No message of desired type */, ENOMSG = 42 /* No message of desired type */,
IdRm = 43 /* Identifier removed */, EIDRM = 43 /* Identifier removed */,
ChRng = 44 /* Channel number out of range */, ECHRNG = 44 /* Channel number out of range */,
L2NSync = 45 /* Level 2 not synchronized */, EL2NSYNC = 45 /* Level 2 not synchronized */,
L3Hlt = 46 /* Level 3 halted */, EL3HLT = 46 /* Level 3 halted */,
L3Rst = 47 /* Level 3 reset */, EL3RST = 47 /* Level 3 reset */,
LnRng = 48 /* Link number out of range */, ELNRNG = 48 /* Link number out of range */,
UnAtch = 49 /* Protocol driver not attached */, EUNATCH = 49 /* Protocol driver not attached */,
NoCsi = 50 /* No CSI structure available */, ENOCSI = 50 /* No CSI structure available */,
L2Hlt = 51 /* Level 2 halted */, EL2HLT = 51 /* Level 2 halted */,
BadE = 52 /* Invalid exchange */, EBADE = 52 /* Invalid exchange */,
BadR = 53 /* Invalid request descriptor */, EBADR = 53 /* Invalid request descriptor */,
XFull = 54 /* Exchange full */, EXFULL = 54 /* Exchange full */,
NoAno = 55 /* No anode */, ENOANO = 55 /* No anode */,
BadRqC = 56 /* Invalid request code */, EBADRQC = 56 /* Invalid request code */,
BadSlt = 57 /* Invalid slot */, EBADSLT = 57 /* Invalid slot */,
DeadLock = DeadLk, EDEADLOCK = EDEADLK,
BFont = 59 /* Bad font file format */, EBFONT = 59 /* Bad font file format */,
NoStr = 60 /* Device not a stream */, ENOSTR = 60 /* Device not a stream */,
NoData = 61 /* No data available */, ENODATA = 61 /* No data available */,
Time = 62 /* Timer expired */, ETIME = 62 /* Timer expired */,
NoSr = 63 /* Out of streams resources */, ENOSR = 63 /* Out of streams resources */,
NoNet = 64 /* Machine is not on the network */, ENONET = 64 /* Machine is not on the network */,
NoPkg = 65 /* Package not installed */, ENOPKG = 65 /* Package not installed */,
Remote = 66 /* Object is remote */, EREMOTE = 66 /* Object is remote */,
NoLink = 67 /* Link has been severed */, ENOLINK = 67 /* Link has been severed */,
Adv = 68 /* Advertise error */, EADV = 68 /* Advertise error */,
Stmnt = 69 /* Srmount error */, ESRMNT = 69 /* Srmount error */,
Comm = 70 /* Communication error on send */, ECOMM = 70 /* Communication error on send */,
Proto = 71 /* Protocol error */, EPROTO = 71 /* Protocol error */,
Multihop = 72 /* Multihop attempted */, EMULTIHOP = 72 /* Multihop attempted */,
DotDot = 73 /* RFS specific error */, EDOTDOT = 73 /* RFS specific error */,
BadMsg = 74 /* Not a data message */, EBADMSG = 74 /* Not a data message */,
Overflow = 75 /* Value too large for defined data type */, EOVERFLOW = 75 /* Value too large for defined data type */,
NotUniq = 76 /* Name not unique on network */, ENOTUNIQ = 76 /* Name not unique on network */,
BadFd = 77 /* File descriptor in bad state */, EBADFD = 77 /* File descriptor in bad state */,
RemChg = 78 /* Remote address changed */, EREMCHG = 78 /* Remote address changed */,
LibAcc = 79 /* Can not access a needed shared library */, ELIBACC = 79 /* Can not access a needed shared library */,
LibBad = 80 /* Accessing a corrupted shared library */, ELIBBAD = 80 /* Accessing a corrupted shared library */,
LibScn = 81 /* .lib section in a.out corrupted */, ELIBSCN = 81 /* .lib section in a.out corrupted */,
LibMax = 82 /* Attempting to link in too many shared libraries */, ELIBMAX = 82 /* Attempting to link in too many shared libraries */,
LibExec = 83 /* Cannot exec a shared library directly */, ELIBEXEC = 83 /* Cannot exec a shared library directly */,
IlSeq = 84 /* Illegal byte sequence */, EILSEQ = 84 /* Illegal byte sequence */,
Restart = 85 /* Interrupted system call should be restarted */, ERESTART = 85 /* Interrupted system call should be restarted */,
StrPipe = 86 /* Streams pipe error */, ESTRPIPE = 86 /* Streams pipe error */,
Users = 87 /* Too many users */, EUSERS = 87 /* Too many users */,
NotSock = 88 /* Socket operation on non-socket */, ENOTSOCK = 88 /* Socket operation on non-socket */,
DestAddrReq = 89 /* Destination address required */, EDESTADDRREQ = 89 /* Destination address required */,
MsgSize = 90 /* Message too long */, EMSGSIZE = 90 /* Message too long */,
ProtoType = 91 /* Protocol wrong type for socket */, EPROTOTYPE = 91 /* Protocol wrong type for socket */,
NoProtoOpt = 92 /* Protocol not available */, ENOPROTOOPT = 92 /* Protocol not available */,
ProtoNoSupport = 93 /* Protocol not supported */, EPROTONOSUPPORT = 93 /* Protocol not supported */,
SocktNoSupport = 94 /* Socket type not supported */, ESOCKTNOSUPPORT = 94 /* Socket type not supported */,
OpNotSupp = 95 /* Operation not supported on transport endpoint */, EOPNOTSUPP = 95 /* Operation not supported on transport endpoint */,
PfNoSupport = 96 /* Protocol family not supported */, EPFNOSUPPORT = 96 /* Protocol family not supported */,
AfNoSupport = 97 /* Address family not supported by protocol */, EAFNOSUPPORT = 97 /* Address family not supported by protocol */,
AddrInUse = 98 /* Address already in use */, EADDRINUSE = 98 /* Address already in use */,
AddrNotAvail = 99 /* Cannot assign requested address */, EADDRNOTAVAIL = 99 /* Cannot assign requested address */,
NetDown = 100 /* Network is down */, ENETDOWN = 100 /* Network is down */,
NetUnReach = 101 /* Network is unreachable */, ENETUNREACH = 101 /* Network is unreachable */,
NetReset = 102 /* Network dropped connection because of reset */, ENETRESET = 102 /* Network dropped connection because of reset */,
ConnAborted = 103 /* Software caused connection abort */, ECONNABORTED = 103 /* Software caused connection abort */,
ConnReset = 104 /* Connection reset by peer */, ECONNRESET = 104 /* Connection reset by peer */,
NoBufs = 105 /* No buffer space available */, ENOBUFS = 105 /* No buffer space available */,
IsConn = 106 /* Transport endpoint is already connected */, EISCONN = 106 /* Transport endpoint is already connected */,
NotConn = 107 /* Transport endpoint is not connected */, ENOTCONN = 107 /* Transport endpoint is not connected */,
Shutdown = 108 /* Cannot send after transport endpoint shutdown */, ESHUTDOWN = 108 /* Cannot send after transport endpoint shutdown */,
TooManyRefs = 109 /* Too many references: cannot splice */, ETOOMANYREFS = 109 /* Too many references: cannot splice */,
TimedOut = 110 /* Connection timed out */, ETIMEDOUT = 110 /* Connection timed out */,
ConnRefused = 111 /* Connection refused */, ECONNREFUSED = 111 /* Connection refused */,
HostDown = 112 /* Host is down */, EHOSTDOWN = 112 /* Host is down */,
HostUnReach = 113 /* No route to host */, EHOSTUNREACH = 113 /* No route to host */,
Already = 114 /* Operation already in progress */, EALREADY = 114 /* Operation already in progress */,
InProgress = 115 /* Operation now in progress */, EINPROGRESS = 115 /* Operation now in progress */,
Stale = 116 /* Stale file handle */, ESTALE = 116 /* Stale file handle */,
UClean = 117 /* Structure needs cleaning */, EUCLEAN = 117 /* Structure needs cleaning */,
NotNam = 118 /* Not a XENIX named type file */, ENOTNAM = 118 /* Not a XENIX named type file */,
NAvail = 119 /* No XENIX semaphores available */, ENAVAIL = 119 /* No XENIX semaphores available */,
IsNam = 120 /* Is a named type file */, EISNAM = 120 /* Is a named type file */,
RemoteIo = 121 /* Remote I/O error */, EREMOTEIO = 121 /* Remote I/O error */,
DQuot = 122 /* Quota exceeded */, EDQUOT = 122 /* Quota exceeded */,
NoMedium = 123 /* No medium found */, ENOMEDIUM = 123 /* No medium found */,
MediumType = 124 /* Wrong medium type */, EMEDIUMTYPE = 124 /* Wrong medium type */,
Canceled = 125 /* Operation Canceled */, ECANCELED = 125 /* Operation Canceled */,
NoKey = 126 /* Required key not available */, ENOKEY = 126 /* Required key not available */,
KeyExpired = 127 /* Key has expired */, EKEYEXPIRED = 127 /* Key has expired */,
KeyRevoked = 128 /* Key has been revoked */, EKEYREVOKED = 128 /* Key has been revoked */,
KeyRejected = 129 /* Key was rejected by service */, EKEYREJECTED = 129 /* Key was rejected by service */,
/* for robust mutexes */ /* for robust mutexes */
OwnerDead = 130 /* Owner died */, EOWNERDEAD = 130 /* Owner died */,
NotRecoverable = 131 /* State not recoverable */, ENOTRECOVERABLE = 131 /* State not recoverable */,
RfKill = 132 /* Operation not possible due to RF-kill */, ERFKILL = 132 /* Operation not possible due to RF-kill */,
HwPoison = 133 /* Memory page has hardware error */ EHWPOISON = 133 /* Memory page has hardware error */
} }
} }

View file

@ -1,82 +1,85 @@
namespace Ryujinx.HLE.Utilities using System.Diagnostics.CodeAnalysis;
namespace Ryujinx.HLE.Utilities
{ {
internal enum WsaError [SuppressMessage("ReSharper", "InconsistentNaming")]
enum WsaError
{ {
/* /*
* All Windows Sockets error constants are biased by WSABASEERR from * All Windows Sockets error constants are biased by WSABASEERR from
* the "normal" * the "normal"
*/ */
BaseError = 10000, WSABASEERR = 10000,
/* /*
* Windows Sockets definitions of regular Microsoft C error constants * Windows Sockets definitions of regular Microsoft C error constants
*/ */
Interrupted = (BaseError + 4), WSAEINTR = (WSABASEERR + 4),
BadFileHandle = (BaseError + 9), WSAEBADF = (WSABASEERR + 9),
AccessDenied = (BaseError + 13), WSAEACCES = (WSABASEERR + 13),
Fault = (BaseError + 14), WSAEFAULT = (WSABASEERR + 14),
InvalidArgument = (BaseError + 22), WSAEINVAL = (WSABASEERR + 22),
TooManyOpenSockets = (BaseError + 24), WSAEMFILE = (WSABASEERR + 24),
/* /*
* Windows Sockets definitions of regular Berkeley error constants * Windows Sockets definitions of regular Berkeley error constants
*/ */
WouldBlock = (BaseError + 35), WSAEWOULDBLOCK = (WSABASEERR + 35),
InProgress = (BaseError + 36), WSAEINPROGRESS = (WSABASEERR + 36),
AlreadyInProgress = (BaseError + 37), WSAEALREADY = (WSABASEERR + 37),
NotSocket = (BaseError + 38), WSAENOTSOCK = (WSABASEERR + 38),
DestinationAddressRequired = (BaseError + 39), WSAEDESTADDRREQ = (WSABASEERR + 39),
MessageSize = (BaseError + 40), WSAEMSGSIZE = (WSABASEERR + 40),
ProtocolType = (BaseError + 41), WSAEPROTOTYPE = (WSABASEERR + 41),
ProtocolOption = (BaseError + 42), WSAENOPROTOOPT = (WSABASEERR + 42),
ProtocolNotSupported = (BaseError + 43), WSAEPROTONOSUPPORT = (WSABASEERR + 43),
SocketNotSupported = (BaseError + 44), WSAESOCKTNOSUPPORT = (WSABASEERR + 44),
OperationNotSupported = (BaseError + 45), WSAEOPNOTSUPP = (WSABASEERR + 45),
ProtocolFamilyNotSupported = (BaseError + 46), WSAEPFNOSUPPORT = (WSABASEERR + 46),
AddressFamilyNotSupported = (BaseError + 47), WSAEAFNOSUPPORT = (WSABASEERR + 47),
AddressAlreadyInUse = (BaseError + 48), WSAEADDRINUSE = (WSABASEERR + 48),
AddressNotAvailable = (BaseError + 49), WSAEADDRNOTAVAIL = (WSABASEERR + 49),
NetworkDown = (BaseError + 50), WSAENETDOWN = (WSABASEERR + 50),
NetworkUnreachable = (BaseError + 51), WSAENETUNREACH = (WSABASEERR + 51),
NetworkReset = (BaseError + 52), WSAENETRESET = (WSABASEERR + 52),
ConnectionAborted = (BaseError + 53), WSAECONNABORTED = (WSABASEERR + 53),
ConnectionReset = (BaseError + 54), WSAECONNRESET = (WSABASEERR + 54),
NoBufferSpaceAvailable = (BaseError + 55), WSAENOBUFS = (WSABASEERR + 55),
IsConnected = (BaseError + 56), WSAEISCONN = (WSABASEERR + 56),
NotConnected = (BaseError + 57), WSAENOTCONN = (WSABASEERR + 57),
Shutdown = (BaseError + 58), WSAESHUTDOWN = (WSABASEERR + 58),
TooManyReferences = (BaseError + 59), WSAETOOMANYREFS = (WSABASEERR + 59),
TimedOut = (BaseError + 60), WSAETIMEDOUT = (WSABASEERR + 60),
ConnectionRefused = (BaseError + 61), WSAECONNREFUSED = (WSABASEERR + 61),
Loop = (BaseError + 62), WSAELOOP = (WSABASEERR + 62),
NameTooLong = (BaseError + 63), WSAENAMETOOLONG = (WSABASEERR + 63),
HostDown = (BaseError + 64), WSAEHOSTDOWN = (WSABASEERR + 64),
HostUnreachable = (BaseError + 65), WSAEHOSTUNREACH = (WSABASEERR + 65),
NotEmpty = (BaseError + 66), WSAENOTEMPTY = (WSABASEERR + 66),
ProcessLimit = (BaseError + 67), WSAEPROCLIM = (WSABASEERR + 67),
UserQuota = (BaseError + 68), WSAEUSERS = (WSABASEERR + 68),
DiskQuota = (BaseError + 69), WSAEDQUOT = (WSABASEERR + 69),
Stale = (BaseError + 70), WSAESTALE = (WSABASEERR + 70),
Remote = (BaseError + 71), WSAEREMOTE = (WSABASEERR + 71),
/* /*
* Extended Windows Sockets error constant definitions * Extended Windows Sockets error constant definitions
*/ */
SystemNotReady = (BaseError + 91), WSASYSNOTREADY = (WSABASEERR + 91),
VersionNotSupported = (BaseError + 92), WSAVERNOTSUPPORTED = (WSABASEERR + 92),
NotInitialized = (BaseError + 93), WSANOTINITIALISED = (WSABASEERR + 93),
Disconnecting = (BaseError + 101), WSAEDISCON = (WSABASEERR + 101),
NoMoreResultsOld = (BaseError + 102), WSAENOMORE = (WSABASEERR + 102),
CancelledOld = (BaseError + 103), WSAECANCELLED = (WSABASEERR + 103),
InvalidProcedureCallTable = (BaseError + 104), WSAEINVALIDPROCTABLE = (WSABASEERR + 104),
InvalidProvider = (BaseError + 105), WSAEINVALIDPROVIDER = (WSABASEERR + 105),
ProviderFailedInit = (BaseError + 106), WSAEPROVIDERFAILEDINIT = (WSABASEERR + 106),
SysCallFailure = (BaseError + 107), WSASYSCALLFAILURE = (WSABASEERR + 107),
ServiceNotFound = (BaseError + 108), WSASERVICE_NOT_FOUND = (WSABASEERR + 108),
TypeNotFound = (BaseError + 109), WSATYPE_NOT_FOUND = (WSABASEERR + 109),
NoMoreResults = (BaseError + 110), WSA_E_NO_MORE = (WSABASEERR + 110),
Cancelled = (BaseError + 111), WSA_E_CANCELLED = (WSABASEERR + 111),
Refused = (BaseError + 112), WSAEREFUSED = (WSABASEERR + 112),
/* /*
* Error return codes from gethostbyname() and gethostbyaddr() * Error return codes from gethostbyname() and gethostbyaddr()
@ -90,42 +93,42 @@
*/ */
/* Authoritative Answer: Host not found */ /* Authoritative Answer: Host not found */
HostNotFound = (BaseError + 1001), WSAHOST_NOT_FOUND = (WSABASEERR + 1001),
/* Non-Authoritative: Host not found, or SERVERFAIL */ /* Non-Authoritative: Host not found, or SERVERFAIL */
TryAgain = (BaseError + 1002), WSATRY_AGAIN = (WSABASEERR + 1002),
/* Non-recoverable errors, FORMERR, REFUSED, NOTIMP */ /* Non-recoverable errors, FORMERR, REFUSED, NOTIMP */
NoRecovery = (BaseError + 1003), WSANO_RECOVERY = (WSABASEERR + 1003),
/* Valid name, no data record of requested type */ /* Valid name, no data record of requested type */
NoData = (BaseError + 1004), WSANO_DATA = (WSABASEERR + 1004),
/* /*
* Define QOS related error return codes * Define QOS related error return codes
* *
*/ */
QosReceivers = (BaseError + 1005), WSA_QOS_RECEIVERS = (WSABASEERR + 1005),
/* at least one Reserve has arrived */ /* at least one Reserve has arrived */
QosSenders = (BaseError + 1006), WSA_QOS_SENDERS = (WSABASEERR + 1006),
/* at least one Path has arrived */ /* at least one Path has arrived */
QosNoSenders = (BaseError + 1007), WSA_QOS_NO_SENDERS = (WSABASEERR + 1007),
/* there are no senders */ /* there are no senders */
QosNoReceivers = (BaseError + 1008), WSA_QOS_NO_RECEIVERS = (WSABASEERR + 1008),
/* there are no receivers */ /* there are no receivers */
QosRequestConfirmed = (BaseError + 1009), WSA_QOS_REQUEST_CONFIRMED = (WSABASEERR + 1009),
/* Reserve has been confirmed */ /* Reserve has been confirmed */
QosAdmissionFailure = (BaseError + 1010), WSA_QOS_ADMISSION_FAILURE = (WSABASEERR + 1010),
/* error due to lack of resources */ /* error due to lack of resources */
QosPolicyFailure = (BaseError + 1011), WSA_QOS_POLICY_FAILURE = (WSABASEERR + 1011),
/* rejected for administrative reasons - bad credentials */ /* rejected for administrative reasons - bad credentials */
QosBadStyle = (BaseError + 1012), WSA_QOS_BAD_STYLE = (WSABASEERR + 1012),
/* unknown or conflicting style */ /* unknown or conflicting style */
QosBadObject = (BaseError + 1013), WSA_QOS_BAD_OBJECT = (WSABASEERR + 1013),
/* problem with some part of the filterspec or providerspecific /* problem with some part of the filterspec or providerspecific
* buffer in general */ * buffer in general */
QosTrafficCtrlError = (BaseError + 1014), WSA_QOS_TRAFFIC_CTRL_ERROR = (WSABASEERR + 1014),
/* problem with some part of the flowspec */ /* problem with some part of the flowspec */
QosGenericError = (BaseError + 1015) WSA_QOS_GENERIC_ERROR = (WSABASEERR + 1015)
} }
} }