Kernel: Use ProtectedValue for VirtualFileSystem::m_mounts

This is what VirtualFileSystem::m_lock was actually guarding, and
wrapping it in a ProtectedValue makes it so much more obvious how it
all works. :^)
This commit is contained in:
Andreas Kling 2021-08-16 01:40:19 +02:00
commit 29a58459ab
Notes: sideshowbarker 2024-07-18 05:38:29 +09:00
2 changed files with 56 additions and 51 deletions

View file

@ -20,6 +20,7 @@
#include <Kernel/FileSystem/UnveilNode.h>
#include <Kernel/Forward.h>
#include <Kernel/KResult.h>
#include <Kernel/Locking/ProtectedValue.h>
namespace Kernel {
@ -65,7 +66,6 @@ public:
KResult mknod(StringView path, mode_t, dev_t, Custody& base);
KResultOr<NonnullRefPtr<Custody>> open_directory(StringView path, Custody& base);
size_t mount_count() const { return m_mounts.size(); }
void for_each_mount(Function<void(const Mount&)>) const;
InodeIdentifier root_inode_id() const;
@ -90,11 +90,10 @@ private:
Mount* find_mount_for_host(InodeIdentifier);
Mount* find_mount_for_guest(InodeIdentifier);
Mutex m_lock { "VFSLock" };
RefPtr<Inode> m_root_inode;
Vector<Mount, 16> m_mounts;
RefPtr<Custody> m_root_custody;
ProtectedValue<Vector<Mount, 16>> m_mounts;
};
}