Serenity Operating System
at master 101 lines 1.9 kB view raw
1/* 2 * Copyright (c) 2020, Andreas Kling <kling@serenityos.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include <AK/DistinctNumeric.h> 10#include <Kernel/API/POSIX/sys/types.h> 11 12namespace Kernel { 13 14enum class LockRank; 15 16class BlockDevice; 17class CharacterDevice; 18class Coredump; 19class Credentials; 20class Custody; 21class Device; 22class DiskCache; 23class DoubleBuffer; 24class File; 25class FATInode; 26class OpenFileDescription; 27class DisplayConnector; 28class FileSystem; 29class FutexQueue; 30class IPv4Socket; 31class Inode; 32class InodeIdentifier; 33class InodeWatcher; 34class Jail; 35class KBuffer; 36class KString; 37class LocalSocket; 38class Mutex; 39class MasterPTY; 40class Mount; 41class PerformanceEventBuffer; 42class ProcFS; 43class ProcFSInode; 44class Process; 45class ProcessGroup; 46class RAMFS; 47template<LockRank Rank> 48class RecursiveSpinlock; 49class Scheduler; 50class Socket; 51class SysFS; 52class SysFSDirectory; 53class SysFSRootDirectory; 54class SysFSBusDirectory; 55class SysFSDevicesDirectory; 56class SysFSDirectoryInode; 57class SysFSInode; 58class TCPSocket; 59class TTY; 60class Thread; 61class ThreadTracer; 62class RAMFSInode; 63class UDPSocket; 64class UserOrKernelBuffer; 65class VirtualFileSystem; 66class WaitQueue; 67class WorkQueue; 68 69namespace Memory { 70class AddressSpace; 71class AnonymousVMObject; 72class InodeVMObject; 73class MappedROM; 74class MemoryManager; 75class PageDirectory; 76class PhysicalPage; 77class PhysicalRegion; 78class PrivateInodeVMObject; 79class Region; 80class SharedInodeVMObject; 81class VMObject; 82class VirtualRange; 83} 84 85template<LockRank Rank> 86class Spinlock; 87template<typename LockType> 88class SpinlockLocker; 89 90struct InodeMetadata; 91struct TrapFrame; 92 93AK_TYPEDEF_DISTINCT_ORDERED_ID(pid_t, ProcessID); 94AK_TYPEDEF_DISTINCT_ORDERED_ID(pid_t, ThreadID); 95AK_TYPEDEF_DISTINCT_ORDERED_ID(pid_t, SessionID); 96AK_TYPEDEF_DISTINCT_ORDERED_ID(pid_t, ProcessGroupID); 97 98AK_TYPEDEF_DISTINCT_ORDERED_ID(uid_t, UserID); 99AK_TYPEDEF_DISTINCT_ORDERED_ID(gid_t, GroupID); 100 101}