1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 12:48:10 +00:00

Kernel: Avoid transient kmalloc heap allocations in sys$select()

Dynamic Vector allocations in sys$select() were showing up in the
full-system profile and since there will never be more than FD_SETSIZE
file descriptors to worry about, we can confidently add enough inline
capacity to this Vector that it never has to kmalloc.

To compensate for the increased stack usage, reduce the size of the
FDInfo struct while we're here. :^)
This commit is contained in:
Andreas Kling 2021-03-03 20:21:24 +01:00
parent cf32f29af6
commit d96a44a738
2 changed files with 3 additions and 3 deletions

View file

@ -74,7 +74,7 @@ KResultOr<int> Process::sys$select(Userspace<const Syscall::SC_select_params*> u
return EFAULT;
Thread::SelectBlocker::FDVector fds_info;
Vector<int> fds;
Vector<int, FD_SETSIZE> fds;
for (int fd = 0; fd < params.nfds; fd++) {
u32 block_flags = (u32)Thread::FileBlocker::BlockFlags::None;
if (params.readfds && FD_ISSET(fd, &fds_read))