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_minor(minor)
{
VFS::the().register_device(*this);
VFS::the().register_device({}, *this);
}
Device::~Device()
{
VFS::the().unregister_device(*this);
VFS::the().unregister_device({}, *this);
}
String Device::absolute_path(FileDescriptor&) const

View File

@ -584,12 +584,12 @@ InodeIdentifier VFS::Mount::host() const
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);
}
void VFS::unregister_device(Device& device)
void VFS::unregister_device(Badge<Device>, Device& device)
{
m_devices.remove(encoded_device(device.major(), device.minor()));
}

View File

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