mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-30 08:18:49 +00:00
Kernel: Fix the return type for syscalls
The Process::Handler type has KResultOr<FlatPtr> as its return type. Using a different return type with an equally-sized template parameter sort of works but breaks once that condition is no longer true, e.g. for KResultOr<int> on x86_64. Ideally the syscall handlers would also take FlatPtrs as their args so we can get rid of the reinterpret_cast for the function pointer but I didn't quite feel like cleaning that up as well.
This commit is contained in:
parent
b6435372cc
commit
2a78bf8596
Notes:
sideshowbarker
2024-07-18 11:22:24 +09:00
Author: https://github.com/gunnarbeutner
Commit: 2a78bf8596
Pull-request: https://github.com/SerenityOS/serenity/pull/8301
71 changed files with 313 additions and 301 deletions
|
@ -9,7 +9,7 @@
|
|||
|
||||
namespace Kernel {
|
||||
|
||||
KResultOr<size_t> Process::sys$get_dir_entries(int fd, Userspace<void*> user_buffer, size_t user_size)
|
||||
KResultOr<FlatPtr> Process::sys$get_dir_entries(int fd, Userspace<void*> user_buffer, size_t user_size)
|
||||
{
|
||||
REQUIRE_PROMISE(stdio);
|
||||
if (user_size > NumericLimits<ssize_t>::max())
|
||||
|
@ -20,7 +20,11 @@ KResultOr<size_t> Process::sys$get_dir_entries(int fd, Userspace<void*> user_buf
|
|||
auto buffer = UserOrKernelBuffer::for_user_buffer(user_buffer, static_cast<size_t>(user_size));
|
||||
if (!buffer.has_value())
|
||||
return EFAULT;
|
||||
return description->get_dir_entries(buffer.value(), user_size);
|
||||
auto result = description->get_dir_entries(buffer.value(), user_size);
|
||||
if (result.is_error())
|
||||
return result.error();
|
||||
else
|
||||
return result.release_value();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue