mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 23:50:19 +00:00
UserspaceEmulator: Update virt$lseek and virt$ftruncate for 64bit off_t
The syscalls' prototypes were recently changed in preparation for 64bit storage in serenity, so update them here as well :^)
This commit is contained in:
parent
663dea4a60
commit
0deb0c6891
Notes:
sideshowbarker
2024-07-18 21:07:08 +09:00
Author: https://github.com/IdanHo Commit: https://github.com/SerenityOS/serenity/commit/0deb0c68910 Pull-request: https://github.com/SerenityOS/serenity/pull/5926 Issue: https://github.com/SerenityOS/serenity/issues/5900
2 changed files with 12 additions and 6 deletions
|
@ -148,7 +148,7 @@ private:
|
|||
u32 virt$fcntl(int fd, int, u32);
|
||||
int virt$getgroups(ssize_t count, FlatPtr);
|
||||
int virt$setgroups(ssize_t count, FlatPtr);
|
||||
int virt$lseek(int fd, off_t offset, int whence);
|
||||
int virt$lseek(int fd, FlatPtr offset_addr, int whence);
|
||||
int virt$socket(int, int, int);
|
||||
int virt$getsockopt(FlatPtr);
|
||||
int virt$setsockopt(FlatPtr);
|
||||
|
@ -184,7 +184,7 @@ private:
|
|||
u32 virt$allocate_tls(size_t);
|
||||
int virt$ptsname(int fd, FlatPtr buffer, size_t buffer_size);
|
||||
int virt$beep();
|
||||
int virt$ftruncate(int fd, off_t);
|
||||
int virt$ftruncate(int fd, FlatPtr length_addr);
|
||||
mode_t virt$umask(mode_t);
|
||||
int virt$anon_create(size_t, int);
|
||||
int virt$recvfd(int, int);
|
||||
|
|
|
@ -457,9 +457,11 @@ int Emulator::virt$get_stack_bounds(FlatPtr base, FlatPtr size)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int Emulator::virt$ftruncate(int fd, off_t length)
|
||||
int Emulator::virt$ftruncate(int fd, FlatPtr length_addr)
|
||||
{
|
||||
return syscall(SC_ftruncate, fd, length);
|
||||
off_t length;
|
||||
mmu().copy_from_vm(&length, length_addr, sizeof(off_t));
|
||||
return syscall(SC_ftruncate, fd, &length);
|
||||
}
|
||||
|
||||
mode_t Emulator::virt$umask(mode_t mask)
|
||||
|
@ -578,9 +580,13 @@ int Emulator::virt$set_process_name(FlatPtr user_buffer, int size)
|
|||
return syscall(SC_set_process_name, name.characters(), name.length());
|
||||
}
|
||||
|
||||
int Emulator::virt$lseek(int fd, off_t offset, int whence)
|
||||
int Emulator::virt$lseek(int fd, FlatPtr offset_addr, int whence)
|
||||
{
|
||||
return syscall(SC_lseek, fd, offset, whence);
|
||||
off_t offset;
|
||||
mmu().copy_from_vm(&offset, offset_addr, sizeof(off_t));
|
||||
auto rc = syscall(SC_lseek, fd, &offset, whence);
|
||||
mmu().copy_to_vm(offset_addr, &offset, sizeof(off_t));
|
||||
return rc;
|
||||
}
|
||||
|
||||
int Emulator::virt$socket(int domain, int type, int protocol)
|
||||
|
|
Loading…
Reference in a new issue