Serenity Operating System
1/*
2 * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#include <Kernel/Devices/CharacterDevice.h>
8#include <Kernel/FileSystem/SysFS/Subsystems/DeviceIdentifiers/CharacterDevicesDirectory.h>
9
10namespace Kernel {
11
12CharacterDevice::~CharacterDevice() = default;
13
14void CharacterDevice::after_inserting_add_symlink_to_device_identifier_directory()
15{
16 VERIFY(m_symlink_sysfs_component);
17 SysFSCharacterDevicesDirectory::the().devices_list({}).with([&](auto& list) -> void {
18 list.append(*m_symlink_sysfs_component);
19 });
20}
21
22void CharacterDevice::before_will_be_destroyed_remove_symlink_from_device_identifier_directory()
23{
24 VERIFY(m_symlink_sysfs_component);
25 SysFSCharacterDevicesDirectory::the().devices_list({}).with([&](auto& list) -> void {
26 list.remove(*m_symlink_sysfs_component);
27 });
28}
29
30// FIXME: This method will be eventually removed after all nodes in /sys/dev/char/ are symlinks
31void CharacterDevice::after_inserting_add_to_device_identifier_directory()
32{
33 VERIFY(m_sysfs_component);
34 SysFSCharacterDevicesDirectory::the().devices_list({}).with([&](auto& list) -> void {
35 list.append(*m_sysfs_component);
36 });
37}
38
39// FIXME: This method will be eventually removed after all nodes in /sys/dev/char/ are symlinks
40void CharacterDevice::before_will_be_destroyed_remove_from_device_identifier_directory()
41{
42 VERIFY(m_sysfs_component);
43 SysFSCharacterDevicesDirectory::the().devices_list({}).with([&](auto& list) -> void {
44 list.remove(*m_sysfs_component);
45 });
46}
47
48}