mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-24 16:01:15 +02:00
Merge pull request #129 from Sonicadvance1/more_syscalls2
Implements two more syscalls
This commit is contained in:
6 files changed
+23
-1
No files matched your search
+6
-1
@@ -235,7 +235,12 @@ namespace FEXCore::HLE {
|
||||
uint64_t Pipe2(FEXCore::Core::InternalThreadState *Thread, int pipefd[2], int flags) {
|
||||
uint64_t Result = ::pipe2(pipefd, flags);
|
||||
SYSCALL_ERRNO();
|
||||
}
|
||||
}
|
||||
|
||||
uint64_t Inotify_init1(FEXCore::Core::InternalThreadState *Thread, int flags) {
|
||||
uint64_t Result = ::inotify_init1(flags);
|
||||
SYSCALL_ERRNO();
|
||||
}
|
||||
|
||||
uint64_t Memfd_Create(FEXCore::Core::InternalThreadState *Thread, const char *name, uint32_t flags) {
|
||||
uint64_t Result = ::memfd_create(name, flags);
|
||||
|
||||
@@ -49,6 +49,7 @@ namespace FEXCore::HLE {
|
||||
uint64_t Timerfd_Create(FEXCore::Core::InternalThreadState *Thread, int32_t clockid, int32_t flags);
|
||||
uint64_t Eventfd(FEXCore::Core::InternalThreadState *Thread, uint32_t initval, uint32_t flags);
|
||||
uint64_t Pipe2(FEXCore::Core::InternalThreadState *Thread, int pipefd[2], int flags);
|
||||
uint64_t Inotify_init1(FEXCore::Core::InternalThreadState *Thread, int flags);
|
||||
uint64_t Memfd_Create(FEXCore::Core::InternalThreadState *Thread, const char *name, uint32_t flags);
|
||||
uint64_t Statx(FEXCore::Core::InternalThreadState *Thread, int dirfd, const char *pathname, int flags, uint32_t mask, struct statx *statxbuf);
|
||||
uint64_t Ppoll(FEXCore::Core::InternalThreadState *Thread, struct pollfd *fds, nfds_t nfds, const struct timespec *timeout_ts, const sigset_t *sigmask, size_t sigsetsize);
|
||||
|
||||
@@ -64,6 +64,11 @@ namespace FEXCore::HLE {
|
||||
SYSCALL_ERRNO();
|
||||
}
|
||||
|
||||
uint64_t Socketpair(FEXCore::Core::InternalThreadState *Thread, int domain, int type, int protocol, int sv[2]) {
|
||||
uint64_t Result = ::socketpair(domain, type, protocol, sv);
|
||||
SYSCALL_ERRNO();
|
||||
}
|
||||
|
||||
uint64_t SetSockOpt(FEXCore::Core::InternalThreadState *Thread, int sockfd, int level, int optname, const void *optval, socklen_t optlen) {
|
||||
uint64_t Result = ::setsockopt(sockfd, level, optname, optval, optlen);
|
||||
SYSCALL_ERRNO();
|
||||
|
||||
@@ -19,6 +19,7 @@ namespace FEXCore::HLE {
|
||||
uint64_t Listen(FEXCore::Core::InternalThreadState *Thread, int sockfd, int backlog);
|
||||
uint64_t GetSockName(FEXCore::Core::InternalThreadState *Thread, int sockfd, struct sockaddr *addr, socklen_t *addrlen);
|
||||
uint64_t GetPeerName(FEXCore::Core::InternalThreadState *Thread, int sockfd, struct sockaddr *addr, socklen_t *addrlen);
|
||||
uint64_t Socketpair(FEXCore::Core::InternalThreadState *Thread, int domain, int type, int protocol, int sv[2]);
|
||||
uint64_t SetSockOpt(FEXCore::Core::InternalThreadState *Thread, int sockfd, int level, int optname, const void *optval, socklen_t optlen);
|
||||
uint64_t GetSockOpt(FEXCore::Core::InternalThreadState *Thread, int sockfd, int level, int optname, void *optval, socklen_t *optlen);
|
||||
uint64_t Sendmmsg(FEXCore::Core::InternalThreadState *Thread, int sockfd, struct mmsghdr *msgvec, uint32_t vlen, int flags);
|
||||
|
||||
@@ -401,6 +401,9 @@ void x64SyscallHandler::Strace(FEXCore::HLE::SyscallArguments *Args, uint64_t Re
|
||||
case SYSCALL_PIPE2:
|
||||
LogMan::Msg::D("pipe2({...}, %d) = %ld", Args->Argument[2], Ret);
|
||||
break;
|
||||
case SYSCALL_INOTIFY_INIT1:
|
||||
LogMan::Msg::D("inotify_init1(%lx) = %ld", Args->Argument[1], Ret);
|
||||
break;
|
||||
case SYSCALL_RT_SIGACTION:
|
||||
LogMan::Msg::D("rt_sigaction(%ld, %p, %p) = %ld", Args->Argument[1], Args->Argument[2], Args->Argument[3], Ret);
|
||||
break;
|
||||
@@ -471,6 +474,9 @@ void x64SyscallHandler::Strace(FEXCore::HLE::SyscallArguments *Args, uint64_t Re
|
||||
case SYSCALL_GETPEERNAME:
|
||||
LogMan::Msg::D("getpeername(%ld, 0x%lx, 0x%lx) = %ld", Args->Argument[1], Args->Argument[2], Args->Argument[3], Ret);
|
||||
break;
|
||||
case SYSCALL_SOCKETPAIR:
|
||||
LogMan::Msg::D("socketpair({...}) = %ld", Ret);
|
||||
break;
|
||||
case SYSCALL_SETSOCKOPT:
|
||||
LogMan::Msg::D("setsockopt(%ld, %ld, %ld, 0x%lx, %ld) = %ld",
|
||||
Args->Argument[1],
|
||||
@@ -729,6 +735,7 @@ void x64SyscallHandler::RegisterSyscallHandlers() {
|
||||
{SYSCALL_LISTEN, cvt(&FEXCore::HLE::Listen), 2},
|
||||
{SYSCALL_GETSOCKNAME, cvt(&FEXCore::HLE::GetSockName), 3},
|
||||
{SYSCALL_GETPEERNAME, cvt(&FEXCore::HLE::GetPeerName), 3},
|
||||
{SYSCALL_SOCKETPAIR, cvt(&FEXCore::HLE::Socketpair), 4},
|
||||
{SYSCALL_SETSOCKOPT, cvt(&FEXCore::HLE::SetSockOpt), 5},
|
||||
{SYSCALL_GETSOCKOPT, cvt(&FEXCore::HLE::GetSockOpt), 5},
|
||||
{SYSCALL_CLONE, cvt(&FEXCore::HLE::Clone), 5},
|
||||
@@ -827,6 +834,7 @@ void x64SyscallHandler::RegisterSyscallHandlers() {
|
||||
{SYSCALL_EVENTFD, cvt(&FEXCore::HLE::Eventfd), 2},
|
||||
{SYSCALL_EPOLL_CREATE1, cvt(&FEXCore::HLE::EPoll_Create1), 1},
|
||||
{SYSCALL_PIPE2, cvt(&FEXCore::HLE::Pipe2), 2},
|
||||
{SYSCALL_INOTIFY_INIT1, cvt(&FEXCore::HLE::Inotify_init1), 1},
|
||||
{SYSCALL_PRLIMIT64, cvt(&FEXCore::HLE::Prlimit64), 4},
|
||||
{SYSCALL_SENDMMSG, cvt(&FEXCore::HLE::Sendmmsg), 4},
|
||||
{SYSCALL_GETRANDOM, cvt(&FEXCore::HLE::Getrandom), 3},
|
||||
|
||||
@@ -70,6 +70,7 @@ enum Syscalls {
|
||||
SYSCALL_LISTEN = 50, ///< __NR_listen
|
||||
SYSCALL_GETSOCKNAME = 51, ///< __NR_getsockname
|
||||
SYSCALL_GETPEERNAME = 52, ///< __NR_getpeername
|
||||
SYSCALL_SOCKETPAIR = 53, ///< __NR_socketpair
|
||||
SYSCALL_SETSOCKOPT = 54, ///< __NR_setsockopt
|
||||
SYSCALL_GETSOCKOPT = 55, ///< __NR_getsockopt
|
||||
SYSCALL_CLONE = 56, ///< __NR_clone
|
||||
@@ -170,6 +171,7 @@ enum Syscalls {
|
||||
SYSCALL_EVENTFD = 290, ///< __NR_eventfd
|
||||
SYSCALL_EPOLL_CREATE1 = 291, ///< __NR_epoll_create1
|
||||
SYSCALL_PIPE2 = 293, ///< __NR_pipe2
|
||||
SYSCALL_INOTIFY_INIT1 = 294, ///< __NR_inotify_init1
|
||||
SYSCALL_PRLIMIT64 = 302, ///< __NR_prlimit64
|
||||
SYSCALL_SENDMMSG = 307, ///< __NR_sendmmsg
|
||||
SYSCALL_GETRANDOM = 318, ///< __NR_getrandom
|
||||
|
||||
Reference in new issue
Block a user