Преглед на файлове

Kernel: Avoid ninja-import of global variable

This would have caused an issue later when we enable -Wmissing-declarations, as
the compiler didn't see that Kernel::all_inodes() was being used elsewhere, too.
Also, this means that if the type changes later, there's not going to be weird
run-time issues, but rather a nice type error during compile time.
Ben Wiederhake преди 5 години
родител
ревизия
5e48eda218
променени са 3 файла, в които са добавени 6 реда и са изтрити 6 реда
  1. 4 4
      Kernel/FileSystem/Inode.cpp
  2. 1 0
      Kernel/FileSystem/Inode.h
  3. 1 2
      Kernel/FileSystem/ProcFS.cpp

+ 4 - 4
Kernel/FileSystem/Inode.cpp

@@ -39,7 +39,7 @@ namespace Kernel {
 
 static SpinLock s_all_inodes_lock;
 
-static InlineLinkedList<Inode>& all_inodes()
+InlineLinkedList<Inode>& Inode::all_with_lock()
 {
     ASSERT(s_all_inodes_lock.is_locked());
 
@@ -54,7 +54,7 @@ void Inode::sync()
     NonnullRefPtrVector<Inode, 32> inodes;
     {
         ScopedSpinLock all_inodes_lock(s_all_inodes_lock);
-        for (auto& inode : all_inodes()) {
+        for (auto& inode : all_with_lock()) {
             if (inode.is_metadata_dirty())
                 inodes.append(inode);
         }
@@ -110,13 +110,13 @@ Inode::Inode(FS& fs, unsigned index)
     , m_index(index)
 {
     ScopedSpinLock all_inodes_lock(s_all_inodes_lock);
-    all_inodes().append(this);
+    all_with_lock().append(this);
 }
 
 Inode::~Inode()
 {
     ScopedSpinLock all_inodes_lock(s_all_inodes_lock);
-    all_inodes().remove(this);
+    all_with_lock().remove(this);
 }
 
 void Inode::will_be_destroyed()

+ 1 - 0
Kernel/FileSystem/Inode.h

@@ -105,6 +105,7 @@ public:
     SharedInodeVMObject* shared_vmobject() { return m_shared_vmobject.ptr(); }
     const SharedInodeVMObject* shared_vmobject() const { return m_shared_vmobject.ptr(); }
 
+    static InlineLinkedList<Inode>& all_with_lock();
     static void sync();
 
     bool has_watchers() const { return !m_watchers.is_empty(); }

+ 1 - 2
Kernel/FileSystem/ProcFS.cpp

@@ -900,10 +900,9 @@ static Optional<KBuffer> procfs$all(InodeIdentifier)
 
 static Optional<KBuffer> procfs$inodes(InodeIdentifier)
 {
-    extern InlineLinkedList<Inode>& all_inodes();
     KBufferBuilder builder;
     InterruptDisabler disabler;
-    for (auto& inode : all_inodes()) {
+    for (auto& inode : Inode::all_with_lock()) {
         builder.appendf("Inode{K%x} %02u:%08u (%u)\n", &inode, inode.fsid(), inode.index(), inode.ref_count());
     }
     return builder.build();