1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-03 05:52:13 +00:00

Kernel: Have File virtuals take a FileDescriptor& rather than a Process&.

This will allow us to implement different behaviors depending on the role
of the descriptor a File is being accessed through.
This commit is contained in:
Andreas Kling 2019-04-29 13:58:40 +02:00
parent 3761bc3ed7
commit 8cbb7f101f
39 changed files with 156 additions and 155 deletions

View file

@ -90,14 +90,14 @@ bool Scheduler::pick_next()
if (thread.state() == Thread::BlockedRead) {
ASSERT(thread.m_blocked_fd != -1);
// FIXME: Block until the amount of data wanted is available.
if (process.m_fds[thread.m_blocked_fd].descriptor->can_read(process))
if (process.m_fds[thread.m_blocked_fd].descriptor->can_read())
thread.unblock();
return IterationDecision::Continue;
}
if (thread.state() == Thread::BlockedWrite) {
ASSERT(thread.m_blocked_fd != -1);
if (process.m_fds[thread.m_blocked_fd].descriptor->can_write(process))
if (process.m_fds[thread.m_blocked_fd].descriptor->can_write())
thread.unblock();
return IterationDecision::Continue;
}
@ -130,13 +130,13 @@ bool Scheduler::pick_next()
}
}
for (int fd : thread.m_select_read_fds) {
if (process.m_fds[fd].descriptor->can_read(process)) {
if (process.m_fds[fd].descriptor->can_read()) {
thread.unblock();
return IterationDecision::Continue;
}
}
for (int fd : thread.m_select_write_fds) {
if (process.m_fds[fd].descriptor->can_write(process)) {
if (process.m_fds[fd].descriptor->can_write()) {
thread.unblock();
return IterationDecision::Continue;
}