FileSystem: VFS should require Badge<Device> for device registration.

This commit is contained in:
Andreas Kling 2019-05-31 15:36:49 +02:00
parent a1fdda3e20
commit fa6446fc0d
Notes: sideshowbarker 2024-07-19 13:49:25 +09:00
3 changed files with 10 additions and 9 deletions

View File

@ -6,12 +6,12 @@ Device::Device(unsigned major, unsigned minor)
: m_major(major) : m_major(major)
, m_minor(minor) , m_minor(minor)
{ {
VFS::the().register_device(*this); VFS::the().register_device({}, *this);
} }
Device::~Device() Device::~Device()
{ {
VFS::the().unregister_device(*this); VFS::the().unregister_device({}, *this);
} }
String Device::absolute_path(FileDescriptor&) const String Device::absolute_path(FileDescriptor&) const

View File

@ -584,12 +584,12 @@ InodeIdentifier VFS::Mount::host() const
return m_host_custody->inode().identifier(); return m_host_custody->inode().identifier();
} }
void VFS::register_device(Device& device) void VFS::register_device(Badge<Device>, Device& device)
{ {
m_devices.set(encoded_device(device.major(), device.minor()), &device); m_devices.set(encoded_device(device.major(), device.minor()), &device);
} }
void VFS::unregister_device(Device& device) void VFS::unregister_device(Badge<Device>, Device& device)
{ {
m_devices.remove(encoded_device(device.major(), device.minor())); m_devices.remove(encoded_device(device.major(), device.minor()));
} }

View File

@ -1,14 +1,15 @@
#pragma once #pragma once
#include "FileSystem.h"
#include "InodeIdentifier.h"
#include "InodeMetadata.h"
#include <AK/AKString.h> #include <AK/AKString.h>
#include <AK/Badge.h>
#include <AK/Function.h> #include <AK/Function.h>
#include <AK/HashMap.h> #include <AK/HashMap.h>
#include <AK/OwnPtr.h> #include <AK/OwnPtr.h>
#include <AK/RetainPtr.h> #include <AK/RetainPtr.h>
#include <AK/Vector.h> #include <AK/Vector.h>
#include <Kernel/FileSystem/FileSystem.h>
#include <Kernel/FileSystem/InodeIdentifier.h>
#include <Kernel/FileSystem/InodeMetadata.h>
#include <Kernel/KResult.h> #include <Kernel/KResult.h>
#define O_RDONLY 0 #define O_RDONLY 0
@ -83,8 +84,8 @@ public:
KResult mknod(StringView path, mode_t, dev_t, Custody& base); KResult mknod(StringView path, mode_t, dev_t, Custody& base);
KResultOr<Retained<Custody>> open_directory(StringView path, Custody& base); KResultOr<Retained<Custody>> open_directory(StringView path, Custody& base);
void register_device(Device&); void register_device(Badge<Device>, Device&);
void unregister_device(Device&); void unregister_device(Badge<Device>, Device&);
size_t mount_count() const { return m_mounts.size(); } size_t mount_count() const { return m_mounts.size(); }
void for_each_mount(Function<void(const Mount&)>) const; void for_each_mount(Function<void(const Mount&)>) const;