From acccf9ccda13e134c3fb75b78d26c9465aa23510 Mon Sep 17 00:00:00 2001 From: Sergey Bugaev Date: Sun, 18 Aug 2019 14:48:15 +0300 Subject: Kernel: Move device lookup to Device class itself Previously, VFS stored a list of all devices, and devices had to register and unregister themselves with it. This cleans up things a bit. --- Kernel/Devices/Device.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'Kernel/Devices/Device.h') diff --git a/Kernel/Devices/Device.h b/Kernel/Devices/Device.h index 9455d4e4a3..cf333e7404 100644 --- a/Kernel/Devices/Device.h +++ b/Kernel/Devices/Device.h @@ -2,13 +2,14 @@ // Device is the base class of everything that lives in the /dev directory. // -// All Devices will automatically register with the VFS. // To expose a Device to the filesystem, simply pass two unique numbers to the constructor, // and then mknod a file in /dev with those numbers. // // There are two main subclasses: // - BlockDevice (random access) // - CharacterDevice (sequential) +#include +#include #include #include @@ -28,11 +29,16 @@ public: virtual bool is_device() const override { return true; } virtual bool is_disk_device() const { return false; } + static void for_each(Function); + static Device* get_device(unsigned major, unsigned minor); + protected: Device(unsigned major, unsigned minor); void set_uid(uid_t uid) { m_uid = uid; } void set_gid(gid_t gid) { m_gid = gid; } + static HashMap& all_devices(); + private: unsigned m_major { 0 }; unsigned m_minor { 0 }; -- cgit v1.2.3