1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 09:58:11 +00:00

Kernel: Prepare Socket for becoming a File.

Make the Socket functions take a FileDescriptor& rather than a socket role
throughout the code. Also change threads to block on a FileDescriptor,
rather than either an fd index or a Socket.
This commit is contained in:
Andreas Kling 2019-05-03 20:15:54 +02:00
parent 9f633a1871
commit 03da7046bd
14 changed files with 118 additions and 115 deletions

View file

@ -11,9 +11,9 @@
#include <AK/Vector.h>
class Alarm;
class FileDescriptor;
class Process;
class Region;
class Socket;
enum class ShouldUnblockThread { No = 0, Yes };
@ -86,12 +86,13 @@ public:
void sleep(dword ticks);
void block(Thread::State);
void block(Thread::State, FileDescriptor&);
void unblock();
void set_wakeup_time(qword t) { m_wakeup_time = t; }
qword wakeup_time() const { return m_wakeup_time; }
void snooze_until(Alarm&);
KResult wait_for_connect(Socket&);
KResult wait_for_connect(FileDescriptor&);
const FarPtr& far_ptr() const { return m_far_ptr; }
@ -116,8 +117,6 @@ public:
bool has_used_fpu() const { return m_has_used_fpu; }
void set_has_used_fpu(bool b) { m_has_used_fpu = b; }
void set_blocked_socket(Socket*);
void set_default_signal_dispositions();
void push_value_on_stack(dword);
void make_userspace_stack_for_main_thread(Vector<String> arguments, Vector<String> environment);
@ -148,10 +147,9 @@ private:
void* m_kernel_stack { nullptr };
void* m_kernel_stack_for_signal_handler { nullptr };
pid_t m_waitee_pid { -1 };
int m_blocked_fd { -1 };
RetainPtr<FileDescriptor> m_blocked_descriptor;
timeval m_select_timeout;
SignalActionData m_signal_action_data[32];
RetainPtr<Socket> m_blocked_socket;
Region* m_signal_stack_user_region { nullptr };
Alarm* m_snoozing_alarm { nullptr };
Vector<int> m_select_read_fds;