diff --git a/Kernel/Devices/FloppyDiskDevice.cpp b/Kernel/Devices/FloppyDiskDevice.cpp index 5d7902160f..79d84c670e 100644 --- a/Kernel/Devices/FloppyDiskDevice.cpp +++ b/Kernel/Devices/FloppyDiskDevice.cpp @@ -24,10 +24,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include #include -#include -#include #include #include diff --git a/Kernel/Devices/KeyboardDevice.cpp b/Kernel/Devices/KeyboardDevice.cpp index 2c7bb907a7..8b9071b708 100644 --- a/Kernel/Devices/KeyboardDevice.cpp +++ b/Kernel/Devices/KeyboardDevice.cpp @@ -25,6 +25,7 @@ */ #include +#include #include #include #include diff --git a/Kernel/FileSystem/DiskBackedFileSystem.cpp b/Kernel/FileSystem/DiskBackedFileSystem.cpp index 05f62c09fc..62b61285d4 100644 --- a/Kernel/FileSystem/DiskBackedFileSystem.cpp +++ b/Kernel/FileSystem/DiskBackedFileSystem.cpp @@ -25,6 +25,7 @@ */ #include +#include #include #include #include diff --git a/Kernel/FileSystem/DiskBackedFileSystem.h b/Kernel/FileSystem/DiskBackedFileSystem.h index e6b1553f56..a5909eaf39 100644 --- a/Kernel/FileSystem/DiskBackedFileSystem.h +++ b/Kernel/FileSystem/DiskBackedFileSystem.h @@ -26,13 +26,11 @@ #pragma once -#include "FileSystem.h" -#include +#include +#include namespace Kernel { -class DiskCache; - class DiskBackedFS : public FS { public: virtual ~DiskBackedFS() override; diff --git a/Kernel/FileSystem/Ext2FileSystem.cpp b/Kernel/FileSystem/Ext2FileSystem.cpp index 9433b3e5bf..8778c2ca05 100644 --- a/Kernel/FileSystem/Ext2FileSystem.cpp +++ b/Kernel/FileSystem/Ext2FileSystem.cpp @@ -26,7 +26,9 @@ #include #include +#include #include +#include #include #include #include diff --git a/Kernel/FileSystem/File.h b/Kernel/FileSystem/File.h index c812b9b2ca..3779ef8510 100644 --- a/Kernel/FileSystem/File.h +++ b/Kernel/FileSystem/File.h @@ -30,16 +30,13 @@ #include #include #include +#include #include #include #include namespace Kernel { -class FileDescription; -class Process; -class Region; - // File is the base class for anything that can be referenced by a FileDescription. // // The most important functions in File are: diff --git a/Kernel/FileSystem/FileSystem.h b/Kernel/FileSystem/FileSystem.h index 14ee89a6ba..32e9fbf47e 100644 --- a/Kernel/FileSystem/FileSystem.h +++ b/Kernel/FileSystem/FileSystem.h @@ -26,17 +26,10 @@ #pragma once -#include -#include -#include -#include #include #include #include -#include -#include #include -#include #include #include #include diff --git a/Kernel/FileSystem/Inode.h b/Kernel/FileSystem/Inode.h index 1289cc2ca4..4c4bd1c619 100644 --- a/Kernel/FileSystem/Inode.h +++ b/Kernel/FileSystem/Inode.h @@ -34,17 +34,12 @@ #include #include #include +#include #include #include namespace Kernel { -class FileDescription; -class InodeVMObject; -class InodeWatcher; -class LocalSocket; -class Custody; - class Inode : public RefCounted , public Weakable , public InlineLinkedListNode { diff --git a/Kernel/FileSystem/ProcFS.cpp b/Kernel/FileSystem/ProcFS.cpp index 1d4dde41e5..fc623d8cc9 100644 --- a/Kernel/FileSystem/ProcFS.cpp +++ b/Kernel/FileSystem/ProcFS.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include diff --git a/Kernel/FileSystem/ProcFS.h b/Kernel/FileSystem/ProcFS.h index e482a1a734..3732ba4c75 100644 --- a/Kernel/FileSystem/ProcFS.h +++ b/Kernel/FileSystem/ProcFS.h @@ -26,6 +26,7 @@ #pragma once +#include #include #include #include diff --git a/Kernel/FileSystem/TmpFS.h b/Kernel/FileSystem/TmpFS.h index a7c67f90ab..65c910ba13 100644 --- a/Kernel/FileSystem/TmpFS.h +++ b/Kernel/FileSystem/TmpFS.h @@ -26,6 +26,7 @@ #pragma once +#include #include #include #include diff --git a/Kernel/FileSystem/VirtualFileSystem.cpp b/Kernel/FileSystem/VirtualFileSystem.cpp index 5069e9ca56..09da750d90 100644 --- a/Kernel/FileSystem/VirtualFileSystem.cpp +++ b/Kernel/FileSystem/VirtualFileSystem.cpp @@ -26,7 +26,7 @@ #include #include -#include +#include #include #include #include diff --git a/Kernel/Forward.h b/Kernel/Forward.h new file mode 100644 index 0000000000..d1e3fd9187 --- /dev/null +++ b/Kernel/Forward.h @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2020, Andreas Kling + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#pragma once + +namespace Kernel { + +class BlockDevice; +class CharacterDevice; +class Custody; +class Device; +class DiskCache; +class DoubleBuffer; +class File; +class FileDescription; +class IPv4Socket; +class Inode; +class InodeIdentifier; +class InodeVMObject; +class InodeWatcher; +class KBuffer; +class KResult; +class LocalSocket; +class PageDirectory; +class PhysicalPage; +class PhysicalRegion; +class Process; +class ProcessInspectionHandle; +class ProcessTracer; +class Range; +class RangeAllocator; +class Region; +class Scheduler; +class SharedBuffer; +class Socket; +class TCPSocket; +class Thread; +class UDPSocket; +class VMObject; +class WaitQueue; + +template +class KResultOr; + +} diff --git a/Kernel/KBuffer.h b/Kernel/KBuffer.h index 91cdc09b64..725ae9df43 100644 --- a/Kernel/KBuffer.h +++ b/Kernel/KBuffer.h @@ -37,6 +37,7 @@ // severely limited kmalloc heap. #include +#include #include #include #include diff --git a/Kernel/Lock.h b/Kernel/Lock.h index 8f1ed86b95..c48104deb8 100644 --- a/Kernel/Lock.h +++ b/Kernel/Lock.h @@ -30,12 +30,11 @@ #include #include #include -#include +#include #include namespace Kernel { -class Thread; extern Thread* current; class Lock { diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index d947efb7f5..c5287a5932 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include diff --git a/Kernel/Process.h b/Kernel/Process.h index 46520de607..27ac4f3edb 100644 --- a/Kernel/Process.h +++ b/Kernel/Process.h @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include @@ -47,14 +48,6 @@ class ELFLoader; namespace Kernel { -class FileDescription; -class KBuffer; -class PageDirectory; -class Region; -class VMObject; -class ProcessTracer; -class SharedBuffer; - timeval kgettimeofday(); void kgettimeofday(timeval&); diff --git a/Kernel/Thread.h b/Kernel/Thread.h index 400281be9c..0941bcf247 100644 --- a/Kernel/Thread.h +++ b/Kernel/Thread.h @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include @@ -43,13 +44,6 @@ namespace Kernel { -class Alarm; -class FileDescription; -class Process; -class ProcessInspectionHandle; -class Region; -class WaitQueue; - enum class ShouldUnblockThread { No = 0, Yes diff --git a/Kernel/VM/MemoryManager.h b/Kernel/VM/MemoryManager.h index 2ab5b3b65a..98114e1fe4 100644 --- a/Kernel/VM/MemoryManager.h +++ b/Kernel/VM/MemoryManager.h @@ -26,23 +26,17 @@ #pragma once -#include -#include -#include #include #include #include -#include #include -#include +#include #include #include #include namespace Kernel { -class PhysicalRegion; - #define PAGE_ROUND_UP(x) ((((u32)(x)) + PAGE_SIZE - 1) & (~(PAGE_SIZE - 1))) template