summaryrefslogtreecommitdiff
path: root/Kernel/FileSystem/SysFS/Subsystems/DeviceIdentifiers/DeviceComponent.h
blob: 1c34694d803a8368d926494c6cca133008f582aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/*
 * Copyright (c) 2022, Liav A. <liavalb@hotmail.co.il>
 *
 * SPDX-License-Identifier: BSD-2-Clause
 */

#pragma once

#include <AK/IntrusiveList.h>
#include <Kernel/FileSystem/SysFS/Component.h>
#include <Kernel/Library/KString.h>

namespace Kernel {

class SysFSDeviceComponent final
    : public SysFSComponent
    , public LockWeakable<SysFSDeviceComponent> {
    friend class SysFSBlockDevicesDirectory;
    friend class SysFSCharacterDevicesDirectory;

public:
    static NonnullRefPtr<SysFSDeviceComponent> must_create(Device const&);
    virtual StringView name() const override { return m_major_minor_formatted_device_name->view(); }
    bool is_block_device() const { return m_block_device; }

private:
    SysFSDeviceComponent(NonnullOwnPtr<KString> major_minor_formatted_device_name, Device const&);
    bool m_block_device;

    NonnullOwnPtr<KString> m_major_minor_formatted_device_name;
};

}