diff options
author | Liav A <liavalb@gmail.com> | 2022-04-23 11:19:02 +0300 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2022-07-15 12:29:23 +0200 |
commit | 22335e53e0a3bfde31bb48514301eabcd17468c6 (patch) | |
tree | b7e2b09c5dd54947e7cb318e50cdb0c985142e57 | |
parent | 9b49d9ee60220111a4f81fc0ed1983f0cfa51bc1 (diff) | |
download | serenity-22335e53e0a3bfde31bb48514301eabcd17468c6.zip |
Kernel/Devices: Add two protected methods for DeviceManagement functions
These methods are essentially splitted from the after_inserting method
and the will_be_destroyed method so later on we can allow Storage
devices to override the after_inserting method and the will_be_destroyed
method while still being able to use shared functionality as before,
such as adding the device to and removing it from the device list.
-rw-r--r-- | Kernel/Devices/Device.cpp | 16 | ||||
-rw-r--r-- | Kernel/Devices/Device.h | 3 |
2 files changed, 16 insertions, 3 deletions
diff --git a/Kernel/Devices/Device.cpp b/Kernel/Devices/Device.cpp index 34df75f350..25b727ce96 100644 --- a/Kernel/Devices/Device.cpp +++ b/Kernel/Devices/Device.cpp @@ -21,9 +21,20 @@ Device::Device(MajorNumber major, MinorNumber minor) { } -void Device::after_inserting() +void Device::before_will_be_destroyed_remove_from_device_management() +{ + DeviceManagement::the().before_device_removal({}, *this); + m_state = State::BeingRemoved; +} + +void Device::after_inserting_add_to_device_management() { DeviceManagement::the().after_inserting_device({}, *this); +} + +void Device::after_inserting() +{ + after_inserting_add_to_device_management(); VERIFY(!m_sysfs_component); auto sys_fs_component = SysFSDeviceComponent::must_create(*this); m_sysfs_component = sys_fs_component; @@ -52,8 +63,7 @@ void Device::will_be_destroyed() list.remove(*m_sysfs_component); }); } - DeviceManagement::the().before_device_removal({}, *this); - m_state = State::BeingRemoved; + before_will_be_destroyed_remove_from_device_management(); } Device::~Device() diff --git a/Kernel/Devices/Device.h b/Kernel/Devices/Device.h index b6c9e53d61..f968fe7253 100644 --- a/Kernel/Devices/Device.h +++ b/Kernel/Devices/Device.h @@ -68,6 +68,9 @@ protected: void set_uid(UserID uid) { m_uid = uid; } void set_gid(GroupID gid) { m_gid = gid; } + void after_inserting_add_to_device_management(); + void before_will_be_destroyed_remove_from_device_management(); + private: MajorNumber const m_major { 0 }; MinorNumber const m_minor { 0 }; |