1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 06:57:44 +00:00

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.
This commit is contained in:
Liav A 2022-04-23 11:19:02 +03:00 committed by Andreas Kling
parent 9b49d9ee60
commit 22335e53e0
2 changed files with 16 additions and 3 deletions

View file

@ -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); DeviceManagement::the().after_inserting_device({}, *this);
}
void Device::after_inserting()
{
after_inserting_add_to_device_management();
VERIFY(!m_sysfs_component); VERIFY(!m_sysfs_component);
auto sys_fs_component = SysFSDeviceComponent::must_create(*this); auto sys_fs_component = SysFSDeviceComponent::must_create(*this);
m_sysfs_component = sys_fs_component; m_sysfs_component = sys_fs_component;
@ -52,8 +63,7 @@ void Device::will_be_destroyed()
list.remove(*m_sysfs_component); list.remove(*m_sysfs_component);
}); });
} }
DeviceManagement::the().before_device_removal({}, *this); before_will_be_destroyed_remove_from_device_management();
m_state = State::BeingRemoved;
} }
Device::~Device() Device::~Device()

View file

@ -68,6 +68,9 @@ protected:
void set_uid(UserID uid) { m_uid = uid; } void set_uid(UserID uid) { m_uid = uid; }
void set_gid(GroupID gid) { m_gid = gid; } 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: private:
MajorNumber const m_major { 0 }; MajorNumber const m_major { 0 };
MinorNumber const m_minor { 0 }; MinorNumber const m_minor { 0 };