mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 02:47:34 +00:00
Kernel: Add support for the POLLWRBAND poll event
This commit is contained in:
parent
f2fef049e1
commit
265764ff2f
3 changed files with 14 additions and 6 deletions
|
@ -20,6 +20,7 @@ extern "C" {
|
|||
#define POLLERR (1u << 3)
|
||||
#define POLLHUP (1u << 4)
|
||||
#define POLLNVAL (1u << 5)
|
||||
#define POLLWRBAND (1u << 12)
|
||||
#define POLLRDHUP (1u << 13)
|
||||
|
||||
struct pollfd {
|
||||
|
|
|
@ -159,6 +159,8 @@ ErrorOr<FlatPtr> Process::sys$poll(Userspace<const Syscall::SC_poll_params*> use
|
|||
block_flags |= BlockFlags::Write;
|
||||
if (pfd.events & POLLPRI)
|
||||
block_flags |= BlockFlags::ReadPriority;
|
||||
if (pfd.events & POLLWRBAND)
|
||||
block_flags |= BlockFlags::WritePriority;
|
||||
TRY(fds_info.try_append({ move(description), block_flags }));
|
||||
}
|
||||
|
||||
|
@ -208,6 +210,10 @@ ErrorOr<FlatPtr> Process::sys$poll(Userspace<const Syscall::SC_poll_params*> use
|
|||
VERIFY(pfd.events & POLLOUT);
|
||||
pfd.revents |= POLLOUT;
|
||||
}
|
||||
if (has_flag(fds_entry.unblocked_flags, BlockFlags::WritePriority)) {
|
||||
VERIFY(pfd.events & POLLWRBAND);
|
||||
pfd.revents |= POLLWRBAND;
|
||||
}
|
||||
}
|
||||
if (pfd.revents)
|
||||
fds_with_revents++;
|
||||
|
|
|
@ -588,15 +588,16 @@ public:
|
|||
Read = 1 << 0,
|
||||
Write = 1 << 1,
|
||||
ReadPriority = 1 << 2,
|
||||
WritePriority = 1 << 3,
|
||||
|
||||
Accept = 1 << 3,
|
||||
Connect = 1 << 4,
|
||||
Accept = 1 << 4,
|
||||
Connect = 1 << 5,
|
||||
SocketFlags = Accept | Connect,
|
||||
|
||||
WriteNotOpen = 1 << 5,
|
||||
WriteError = 1 << 6,
|
||||
WriteHangUp = 1 << 7,
|
||||
ReadHangUp = 1 << 8,
|
||||
WriteNotOpen = 1 << 6,
|
||||
WriteError = 1 << 7,
|
||||
WriteHangUp = 1 << 8,
|
||||
ReadHangUp = 1 << 9,
|
||||
Exception = WriteNotOpen | WriteError | WriteHangUp | ReadHangUp,
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue