Merge pull request #241 from phire/fallocate_syscall

Implement fallocate syscall
This commit is contained in:
Stefanos Kornilios Mitsis Poiitidis authored and GitHub committed 2020-06-17 15:16:01 +03:00
commit 620cfa0d09
4 files changed
+15

No files matched your search

+5
View File
@@ -190,6 +190,11 @@ namespace FEXCore::HLE {
SYSCALL_ERRNO();
}
uint64_t Fallocate(FEXCore::Core::InternalThreadState *Thread, int fd, int mode, off_t offset, off_t len) {
uint64_t Result = ::fallocate(fd, mode, offset, len);
SYSCALL_ERRNO();
}
uint64_t Getdents(FEXCore::Core::InternalThreadState *Thread, int fd, void *dirp, uint32_t count) {
#ifdef SYS_getdents
uint64_t Result = syscall(SYS_getdents,
+1
View File
@@ -39,6 +39,7 @@ namespace FEXCore::HLE {
uint64_t Fsync(FEXCore::Core::InternalThreadState *Thread, int fd);
uint64_t Fdatasync(FEXCore::Core::InternalThreadState *Thread, int fd);
uint64_t Ftruncate(FEXCore::Core::InternalThreadState *Thread, int fd, off_t length);
uint64_t Fallocate(FEXCore::Core::InternalThreadState *Thread, int fd, int mode, off_t offset, off_t len);
uint64_t Getdents(FEXCore::Core::InternalThreadState *Thread, int fd, void *dirp, uint32_t count);
uint64_t Fchmod(FEXCore::Core::InternalThreadState *Thread, int fd, int mode);
uint64_t Getdents64(FEXCore::Core::InternalThreadState *Thread, int fd, void *dirp, uint32_t count);
@@ -430,6 +430,13 @@ void x64SyscallHandler::Strace(FEXCore::HLE::SyscallArguments *Args, uint64_t Re
case SYSCALL_TIMERFD_CREATE:
LogMan::Msg::D("timerfd_create(%lx, %lx) = %ld", Args->Argument[1], Args->Argument[2], Ret);
break;
case SYSCALL_FALLOCATE:
LogMan::Msg::D("fallocate(%lx, %lx, %p, %p) = %ld",
Args->Argument[1],
Args->Argument[2],
Args->Argument[3],
Args->Argument[4],
Ret);
case SYSCALL_TIMERFD_SETTIME:
LogMan::Msg::D("timerfd_settime(%ld, %lx, %p, %p) = %ld",
Args->Argument[1],
@@ -936,6 +943,7 @@ void x64SyscallHandler::RegisterSyscallHandlers() {
{SYSCALL_GET_ROBUST_LIST, cvt(&FEXCore::HLE::Get_robust_list), 3},
{SYSCALL_EPOLL_PWAIT, cvt(&FEXCore::HLE::EPoll_Pwait), 5},
{SYSCALL_TIMERFD_CREATE, cvt(&FEXCore::HLE::Timerfd_Create), 2},
{SYSCALL_FALLOCATE, cvt(&FEXCore::HLE::Fallocate), 4},
{SYSCALL_TIMERFD_SETTIME, cvt(&FEXCore::HLE::Timerfd_Settime), 4},
{SYSCALL_TIMERFD_GETTIME, cvt(&FEXCore::HLE::Timerfd_Gettime), 2},
{SYSCALL_ACCEPT4, cvt(&FEXCore::HLE::Accept4), 4},
+1
View File
@@ -180,6 +180,7 @@ enum Syscalls {
SYSCALL_GET_ROBUST_LIST = 274, ///< __NR_get_robust_list
SYSCALL_EPOLL_PWAIT = 281, ///< __NR_epoll_pwait
SYSCALL_TIMERFD_CREATE = 283, ///< __NR_timerfd_create
SYSCALL_FALLOCATE = 285, ///< __NR_fallocate
SYSCALL_TIMERFD_SETTIME = 286, ///< __NR_timerfd_settime
SYSCALL_TIMERFD_GETTIME = 287, ///< __NR_timerfd_gettime
SYSCALL_ACCEPT4 = 288, ///< __NR_accept4