diff --git a/Kernel/FileSystem/DevFS.cpp b/Kernel/FileSystem/DevFS.cpp index 882c5e45321..7de9e8b590b 100644 --- a/Kernel/FileSystem/DevFS.cpp +++ b/Kernel/FileSystem/DevFS.cpp @@ -194,6 +194,18 @@ KResultOr> DevFSRootDirectoryInode::lookup(StringView name) } return ENOENT; } + +KResult DevFSRootDirectoryInode::remove_child(const StringView& name) +{ + MutexLocker locker(fs().m_lock); + for (auto& node : m_nodes) { + if (node.name() == name) { + m_nodes.remove(node); + return KSuccess; + } + } + return KResult(ENOENT); +} KResultOr> DevFSRootDirectoryInode::create_child(StringView name, mode_t mode, dev_t device_mode, UserID, GroupID) { MutexLocker locker(fs().m_lock); diff --git a/Kernel/FileSystem/DevFS.h b/Kernel/FileSystem/DevFS.h index c0860d403dc..05dbf9025c3 100644 --- a/Kernel/FileSystem/DevFS.h +++ b/Kernel/FileSystem/DevFS.h @@ -151,6 +151,7 @@ private: virtual KResult traverse_as_directory(Function) const override; virtual KResultOr> lookup(StringView name) override; virtual InodeMetadata metadata() const override; + virtual KResult remove_child(const StringView& name) override; }; }