mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-01-24 02:03:06 -05: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:
parent
cf32f29af6
commit
d96a44a738
Notes:
sideshowbarker
2024-07-18 21:45:04 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/d96a44a738b
2 changed files with 3 additions and 3 deletions
|
@ -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))
|
||||
|
|
|
@ -530,7 +530,7 @@ public:
|
|||
|
||||
class FileBlocker : public Blocker {
|
||||
public:
|
||||
enum class BlockFlags : u32 {
|
||||
enum class BlockFlags : u16 {
|
||||
None = 0,
|
||||
|
||||
Read = 1 << 0,
|
||||
|
@ -632,7 +632,7 @@ public:
|
|||
public:
|
||||
struct FDInfo {
|
||||
NonnullRefPtr<FileDescription> description;
|
||||
BlockFlags block_flags;
|
||||
BlockFlags block_flags { BlockFlags::None };
|
||||
BlockFlags unblocked_flags { BlockFlags::None };
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue