diff options
Diffstat (limited to 'Kernel')
75 files changed, 1315 insertions, 1149 deletions
diff --git a/Kernel/Alarm.h b/Kernel/Alarm.h index a724a06ec1..ba8fb6211f 100644 --- a/Kernel/Alarm.h +++ b/Kernel/Alarm.h @@ -2,8 +2,8 @@ class Alarm { public: - Alarm() { } - virtual ~Alarm() { } + Alarm() {} + virtual ~Alarm() {} virtual bool is_ringing() const = 0; }; diff --git a/Kernel/Assertions.h b/Kernel/Assertions.h index 8eada59219..de744bf11f 100644 --- a/Kernel/Assertions.h +++ b/Kernel/Assertions.h @@ -1,17 +1,24 @@ #pragma once -#include <Kernel/kstdio.h> #include <Kernel/i386.h> +#include <Kernel/kstdio.h> #ifdef DEBUG [[noreturn]] void __assertion_failed(const char* msg, const char* file, unsigned line, const char* func); -#define ASSERT(expr) (static_cast<bool>(expr) ? (void)0 : __assertion_failed(#expr, __FILE__, __LINE__, __PRETTY_FUNCTION__)) -#define ASSERT_NOT_REACHED() ASSERT(false) +# define ASSERT(expr) (static_cast<bool>(expr) ? (void)0 : __assertion_failed(# expr, __FILE__, __LINE__, __PRETTY_FUNCTION__)) +# define ASSERT_NOT_REACHED() ASSERT(false) #else -#define ASSERT(expr) -#define ASSERT_NOT_REACHED() CRASH() +# define ASSERT(expr) +# define ASSERT_NOT_REACHED() CRASH() #endif -#define CRASH() do { asm volatile("ud2"); } while(0) -#define RELEASE_ASSERT(x) do { if (!(x)) CRASH(); } while(0) +#define CRASH() \ + do { \ + asm volatile("ud2"); \ + } while (0) +#define RELEASE_ASSERT(x) \ + do { \ + if (!(x)) \ + CRASH(); \ + } while (0) #define ASSERT_INTERRUPTS_DISABLED() ASSERT(!(cpu_flags() & 0x200)) #define ASSERT_INTERRUPTS_ENABLED() ASSERT(cpu_flags() & 0x200) diff --git a/Kernel/Console.h b/Kernel/Console.h index 45101a8d0d..59fe006c4e 100644 --- a/Kernel/Console.h +++ b/Kernel/Console.h @@ -35,4 +35,3 @@ private: ConsoleImplementation* m_implementation { nullptr }; CircularQueue<char, 16384> m_logbuffer; }; - diff --git a/Kernel/Devices/BXVGADevice.h b/Kernel/Devices/BXVGADevice.h index 96207d400d..d797724475 100644 --- a/Kernel/Devices/BXVGADevice.h +++ b/Kernel/Devices/BXVGADevice.h @@ -1,10 +1,10 @@ #pragma once -#include <AK/Types.h> #include <AK/AKString.h> -#include <SharedGraphics/Size.h> -#include <Kernel/PhysicalAddress.h> +#include <AK/Types.h> #include <Kernel/Devices/BlockDevice.h> +#include <Kernel/PhysicalAddress.h> +#include <SharedGraphics/Size.h> class BXVGADevice final : public BlockDevice { AK_MAKE_ETERNAL diff --git a/Kernel/Devices/BlockDevice.h b/Kernel/Devices/BlockDevice.h index c96d4d3185..d76d90614d 100644 --- a/Kernel/Devices/BlockDevice.h +++ b/Kernel/Devices/BlockDevice.h @@ -10,7 +10,10 @@ public: virtual bool is_seekable() const override { return true; } protected: - BlockDevice(unsigned major, unsigned minor) : Device(major, minor) { } + BlockDevice(unsigned major, unsigned minor) + : Device(major, minor) + { + } private: virtual bool is_block_device() const final { return true; } diff --git a/Kernel/Devices/CharacterDevice.h b/Kernel/Devices/CharacterDevice.h index 6dedf20743..3e4778b260 100644 --- a/Kernel/Devices/CharacterDevice.h +++ b/Kernel/Devices/CharacterDevice.h @@ -7,7 +7,10 @@ public: virtual ~CharacterDevice() override; protected: - CharacterDevice(unsigned major, unsigned minor) : Device(major, minor) { } + CharacterDevice(unsigned major, unsigned minor) + : Device(major, minor) + { + } private: virtual bool is_character_device() const final { return true; } diff --git a/Kernel/Devices/DiskDevice.h b/Kernel/Devices/DiskDevice.h index badf92b0ca..66a51a8f41 100644 --- a/Kernel/Devices/DiskDevice.h +++ b/Kernel/Devices/DiskDevice.h @@ -23,4 +23,3 @@ public: protected: DiskDevice(); }; - diff --git a/Kernel/Devices/FileBackedDiskDevice.h b/Kernel/Devices/FileBackedDiskDevice.h index c16c848f8b..667f3af427 100644 --- a/Kernel/Devices/FileBackedDiskDevice.h +++ b/Kernel/Devices/FileBackedDiskDevice.h @@ -1,9 +1,9 @@ #pragma once -#include <Kernel/Devices/DiskDevice.h> -#include <AK/RetainPtr.h> #include <AK/AKString.h> +#include <AK/RetainPtr.h> #include <AK/Types.h> +#include <Kernel/Devices/DiskDevice.h> #include <stdio.h> class FileBackedDiskDevice final : public DiskDevice { @@ -30,4 +30,3 @@ private: DiskOffset m_file_length { 0 }; unsigned m_block_size { 0 }; }; - diff --git a/Kernel/Devices/FullDevice.h b/Kernel/Devices/FullDevice.h index c88e6f6857..9974e47c4d 100644 --- a/Kernel/Devices/FullDevice.h +++ b/Kernel/Devices/FullDevice.h @@ -16,4 +16,3 @@ private: virtual bool can_write(FileDescriptor&) const override { return true; } virtual const char* class_name() const override { return "FullDevice"; } }; - diff --git a/Kernel/Devices/IDEDiskDevice.h b/Kernel/Devices/IDEDiskDevice.h index d87ab9e690..7f5cfbd99e 100644 --- a/Kernel/Devices/IDEDiskDevice.h +++ b/Kernel/Devices/IDEDiskDevice.h @@ -1,9 +1,9 @@ #pragma once -#include <Kernel/Lock.h> #include <AK/RetainPtr.h> #include <Kernel/Devices/DiskDevice.h> #include <Kernel/IRQHandler.h> +#include <Kernel/Lock.h> #include <Kernel/PCI.h> #include <Kernel/PhysicalAddress.h> #include <Kernel/VM/PhysicalPage.h> @@ -14,7 +14,8 @@ struct PhysicalRegionDescriptor { word end_of_table { 0 }; }; -class IDEDiskDevice final : public IRQHandler, public DiskDevice { +class IDEDiskDevice final : public IRQHandler + , public DiskDevice { AK_MAKE_ETERNAL public: static Retained<IDEDiskDevice> create(); @@ -58,4 +59,3 @@ private: word m_bus_master_base { 0 }; Lockable<bool> m_dma_enabled; }; - diff --git a/Kernel/Devices/KeyboardDevice.h b/Kernel/Devices/KeyboardDevice.h index c6e9fa972e..16f134b2a7 100644 --- a/Kernel/Devices/KeyboardDevice.h +++ b/Kernel/Devices/KeyboardDevice.h @@ -1,15 +1,16 @@ #pragma once -#include <AK/Types.h> -#include <AK/DoublyLinkedList.h> -#include <AK/CircularQueue.h> -#include <Kernel/Devices/CharacterDevice.h> #include "IRQHandler.h" #include "KeyCode.h" +#include <AK/CircularQueue.h> +#include <AK/DoublyLinkedList.h> +#include <AK/Types.h> +#include <Kernel/Devices/CharacterDevice.h> class KeyboardClient; -class KeyboardDevice final : public IRQHandler, public CharacterDevice { +class KeyboardDevice final : public IRQHandler + , public CharacterDevice { AK_MAKE_ETERNAL public: using Event = KeyEvent; diff --git a/Kernel/Devices/NullDevice.h b/Kernel/Devices/NullDevice.h index b00cfeed67..47ba7baf5a 100644 --- a/Kernel/Devices/NullDevice.h +++ b/Kernel/Devices/NullDevice.h @@ -18,4 +18,3 @@ private: virtual bool can_read(FileDescriptor&) const override; virtual const char* class_name() const override { return "NullDevice"; } }; - diff --git a/Kernel/Devices/PS2MouseDevice.h b/Kernel/Devices/PS2MouseDevice.h index 6a04ab672c..de97cfe4e1 100644 --- a/Kernel/Devices/PS2MouseDevice.h +++ b/Kernel/Devices/PS2MouseDevice.h @@ -1,11 +1,12 @@ #pragma once +#include <AK/CircularQueue.h> #include <Kernel/Devices/CharacterDevice.h> -#include <Kernel/MousePacket.h> #include <Kernel/IRQHandler.h> -#include <AK/CircularQueue.h> +#include <Kernel/MousePacket.h> -class PS2MouseDevice final : public IRQHandler, public CharacterDevice { +class PS2MouseDevice final : public IRQHandler + , public CharacterDevice { public: PS2MouseDevice(); virtual ~PS2MouseDevice() override; diff --git a/Kernel/Devices/RandomDevice.h b/Kernel/Devices/RandomDevice.h index fe7fd1a439..ecce3c6bfb 100644 --- a/Kernel/Devices/RandomDevice.h +++ b/Kernel/Devices/RandomDevice.h @@ -18,4 +18,3 @@ private: virtual bool can_write(FileDescriptor&) const override { return true; } virtual const char* class_name() const override { return "RandomDevice"; } }; - diff --git a/Kernel/Devices/ZeroDevice.h b/Kernel/Devices/ZeroDevice.h index 74cfb60361..930f3adec2 100644 --- a/Kernel/Devices/ZeroDevice.h +++ b/Kernel/Devices/ZeroDevice.h @@ -16,4 +16,3 @@ private: virtual bool can_write(FileDescriptor&) const override { return true; } virtual const char* class_name() const override { return "ZeroDevice"; } }; - diff --git a/Kernel/FileSystem/DevPtsFS.h b/Kernel/FileSystem/DevPtsFS.h index 9898ea0786..fc638bd580 100644 --- a/Kernel/FileSystem/DevPtsFS.h +++ b/Kernel/FileSystem/DevPtsFS.h @@ -26,4 +26,3 @@ private: HashTable<SlavePTY*> m_slave_ptys; }; - diff --git a/Kernel/FileSystem/Ext2FileSystem.h b/Kernel/FileSystem/Ext2FileSystem.h index c958bac411..21e4e856b3 100644 --- a/Kernel/FileSystem/Ext2FileSystem.h +++ b/Kernel/FileSystem/Ext2FileSystem.h @@ -1,9 +1,9 @@ #pragma once -#include <Kernel/UnixTypes.h> +#include <Kernel/FileSystem/DiskBackedFileSystem.h> #include <Kernel/FileSystem/Inode.h> #include <Kernel/FileSystem/ext2_fs.h> -#include <Kernel/FileSystem/DiskBackedFileSystem.h> +#include <Kernel/UnixTypes.h> struct ext2_group_desc; struct ext2_inode; @@ -13,6 +13,7 @@ class Ext2FS; class Ext2FSInode final : public Inode { friend class Ext2FS; + public: virtual ~Ext2FSInode() override; @@ -59,8 +60,9 @@ private: class Ext2FS final : public DiskBackedFS { friend class Ext2FSInode; + public: - static Retained <Ext2FS> create(Retained<DiskDevice>&&); + static Retained<Ext2FS> create(Retained<DiskDevice>&&); virtual ~Ext2FS() override; virtual bool initialize() override; diff --git a/Kernel/FileSystem/FIFO.h b/Kernel/FileSystem/FIFO.h index b9eea984cb..72faae428d 100644 --- a/Kernel/FileSystem/FIFO.h +++ b/Kernel/FileSystem/FIFO.h @@ -1,15 +1,18 @@ #pragma once #include <Kernel/DoubleBuffer.h> -#include <Kernel/UnixTypes.h> #include <Kernel/File.h> +#include <Kernel/UnixTypes.h> class FileDescriptor; class FIFO final : public File { public: - enum class Direction : byte { - Neither, Reader, Writer + enum class Direction : byte + { + Neither, + Reader, + Writer }; static RetainPtr<FIFO> from_fifo_id(dword); diff --git a/Kernel/FileSystem/FileDescriptor.h b/Kernel/FileSystem/FileDescriptor.h index 2f9b98c42b..30ebbce559 100644 --- a/Kernel/FileSystem/FileDescriptor.h +++ b/Kernel/FileSystem/FileDescriptor.h @@ -1,14 +1,14 @@ #pragma once -#include <Kernel/FileSystem/VirtualFileSystem.h> -#include <Kernel/FileSystem/InodeMetadata.h> -#include <Kernel/FileSystem/Inode.h> -#include <Kernel/FileSystem/FIFO.h> -#include <Kernel/LinearAddress.h> +#include <AK/Badge.h> #include <AK/ByteBuffer.h> #include <AK/CircularQueue.h> #include <AK/Retainable.h> -#include <AK/Badge.h> +#include <Kernel/FileSystem/FIFO.h> +#include <Kernel/FileSystem/Inode.h> +#include <Kernel/FileSystem/InodeMetadata.h> +#include <Kernel/FileSystem/VirtualFileSystem.h> +#include <Kernel/LinearAddress.h> #include <Kernel/Net/Socket.h> class File; @@ -119,4 +119,3 @@ private: SocketRole m_socket_role { SocketRole::None }; FIFO::Direction m_fifo_direction { FIFO::Direction::Neither }; }; - diff --git a/Kernel/FileSystem/FileSystem.h b/Kernel/FileSystem/FileSystem.h index 800391036d..097d479b00 100644 --- a/Kernel/FileSystem/FileSystem.h +++ b/Kernel/FileSystem/FileSystem.h @@ -1,20 +1,20 @@ #pragma once -#include <Kernel/Devices/DiskDevice.h> #include "InodeIdentifier.h" #include "InodeMetadata.h" #include "UnixTypes.h" +#include <AK/AKString.h> #include <AK/ByteBuffer.h> +#include <AK/Function.h> #include <AK/HashMap.h> #include <AK/OwnPtr.h> -#include <AK/Retainable.h> #include <AK/RetainPtr.h> -#include <AK/AKString.h> -#include <AK/Function.h> -#include <AK/kstdio.h> -#include <Kernel/Lock.h> +#include <AK/Retainable.h> #include <AK/WeakPtr.h> +#include <AK/kstdio.h> +#include <Kernel/Devices/DiskDevice.h> #include <Kernel/KResult.h> +#include <Kernel/Lock.h> static const dword mepoch = 476763780; @@ -25,6 +25,7 @@ class VMObject; class FS : public Retainable<FS> { friend class Inode; + public: virtual ~FS(); @@ -57,7 +58,7 @@ public: virtual RetainPtr<Inode> get_inode(InodeIdentifier) const = 0; - virtual void flush_writes() { } + virtual void flush_writes() {} protected: FS(); @@ -93,4 +94,3 @@ struct Traits<InodeIdentifier> { }; } - diff --git a/Kernel/FileSystem/Inode.h b/Kernel/FileSystem/Inode.h index 520b271f88..f7f560ce37 100644 --- a/Kernel/FileSystem/Inode.h +++ b/Kernel/FileSystem/Inode.h @@ -1,12 +1,12 @@ #pragma once -#include <AK/Retainable.h> #include <AK/AKString.h> #include <AK/Function.h> +#include <AK/Retainable.h> #include <AK/WeakPtr.h> +#include <Kernel/FileSystem/FileSystem.h> #include <Kernel/FileSystem/InodeIdentifier.h> #include <Kernel/FileSystem/InodeMetadata.h> -#include <Kernel/FileSystem/FileSystem.h> #include <Kernel/KResult.h> #include <Kernel/Lock.h> @@ -17,10 +17,11 @@ class VMObject; class Inode : public Retainable<Inode> { friend class VFS; friend class FS; + public: virtual ~Inode(); - virtual void one_retain_left() { } + virtual void one_retain_left() {} FS& fs() { return m_fs; } const FS& fs() const { return m_fs; } @@ -89,4 +90,3 @@ private: RetainPtr<LocalSocket> m_socket; bool m_metadata_dirty { false }; }; - diff --git a/Kernel/FileSystem/InodeIdentifier.h b/Kernel/FileSystem/InodeIdentifier.h index cb0c24f8c3..95c1bc6226 100644 --- a/Kernel/FileSystem/InodeIdentifier.h +++ b/Kernel/FileSystem/InodeIdentifier.h @@ -8,7 +8,7 @@ struct InodeMetadata; class InodeIdentifier { public: - InodeIdentifier() { } + InodeIdentifier() {} InodeIdentifier(dword fsid, dword inode) : m_fsid(fsid) , m_index(inode) @@ -39,4 +39,3 @@ private: dword m_fsid { 0 }; dword m_index { 0 }; }; - diff --git a/Kernel/FileSystem/InodeMetadata.h b/Kernel/FileSystem/InodeMetadata.h index ee24330f9d..f151fbe048 100644 --- a/Kernel/FileSystem/InodeMetadata.h +++ b/Kernel/FileSystem/InodeMetadata.h @@ -84,5 +84,3 @@ struct InodeMetadata { unsigned major_device { 0 }; unsigned minor_device { 0 }; }; - - diff --git a/Kernel/FileSystem/ProcFS.h b/Kernel/FileSystem/ProcFS.h index 5693806d4e..a8e27a35ac 100644 --- a/Kernel/FileSystem/ProcFS.h +++ b/Kernel/FileSystem/ProcFS.h @@ -1,9 +1,9 @@ #pragma once -#include <Kernel/Lock.h> #include <AK/Types.h> #include <Kernel/FileSystem/FileSystem.h> #include <Kernel/FileSystem/Inode.h> +#include <Kernel/Lock.h> class Process; @@ -11,6 +11,7 @@ class ProcFSInode; class ProcFS final : public FS { friend class ProcFSInode; + public: [[gnu::pure]] static ProcFS& the(); @@ -34,7 +35,7 @@ private: ProcFS(); struct ProcFSDirectoryEntry { - ProcFSDirectoryEntry() { } + ProcFSDirectoryEntry() {} ProcFSDirectoryEntry(const char* a_name, unsigned a_proc_file_type, Function<ByteBuffer(InodeIdentifier)>&& a_read_callback = nullptr, Function<ssize_t(InodeIdentifier, const ByteBuffer&)>&& a_write_callback = nullptr, RetainPtr<ProcFSInode>&& a_inode = nullptr) : name(a_name) , proc_file_type(a_proc_file_type) @@ -69,6 +70,7 @@ struct ProcFSInodeCustomData { class ProcFSInode final : public Inode { friend class ProcFS; + public: virtual ~ProcFSInode() override; diff --git a/Kernel/FileSystem/SyntheticFileSystem.h b/Kernel/FileSystem/SyntheticFileSystem.h index 2e1cfc2254..291d8918dc 100644 --- a/Kernel/FileSystem/SyntheticFileSystem.h +++ b/Kernel/FileSystem/SyntheticFileSystem.h @@ -1,9 +1,9 @@ #pragma once +#include <AK/HashMap.h> #include <Kernel/FileSystem/FileSystem.h> #include <Kernel/FileSystem/Inode.h> #include <Kernel/UnixTypes.h> -#include <AK/HashMap.h> class SynthFSInode; @@ -47,6 +47,7 @@ struct SynthFSInodeCustomData { class SynthFSInode final : public Inode { friend class SynthFS; friend class DevPtsFS; + public: virtual ~SynthFSInode() override; diff --git a/Kernel/FileSystem/VirtualFileSystem.h b/Kernel/FileSystem/VirtualFileSystem.h index 16b0dafbad..04ef61a432 100644 --- a/Kernel/FileSystem/VirtualFileSystem.h +++ b/Kernel/FileSystem/VirtualFileSystem.h @@ -1,14 +1,14 @@ #pragma once +#include "FileSystem.h" +#include "InodeIdentifier.h" +#include "InodeMetadata.h" +#include <AK/AKString.h> +#include <AK/Function.h> #include <AK/HashMap.h> #include <AK/OwnPtr.h> #include <AK/RetainPtr.h> -#include <AK/AKString.h> #include <AK/Vector.h> -#include <AK/Function.h> -#include "InodeIdentifier.h" -#include "InodeMetadata.h" -#include "FileSystem.h" #include <Kernel/KResult.h> #define O_RDONLY 0 @@ -116,4 +116,3 @@ private: Vector<OwnPtr<Mount>> m_mounts; HashMap<dword, Device*> m_devices; }; - diff --git a/Kernel/FileSystem/ext2_fs.h b/Kernel/FileSystem/ext2_fs.h index 4f0856acf1..372423f0ec 100644 --- a/Kernel/FileSystem/ext2_fs.h +++ b/Kernel/FileSystem/ext2_fs.h @@ -16,7 +16,7 @@ #ifndef _LINUX_EXT2_FS_H #define _LINUX_EXT2_FS_H -#include "ext2_types.h" /* Changed from linux/types.h */ +#include "ext2_types.h" /* Changed from linux/types.h */ /* * The second extended filesystem constants/structures @@ -31,149 +31,145 @@ * Define EXT2_PREALLOCATE to preallocate data blocks for expanding files */ #define EXT2_PREALLOCATE -#define EXT2_DEFAULT_PREALLOC_BLOCKS 8 +#define EXT2_DEFAULT_PREALLOC_BLOCKS 8 /* * The second extended file system version */ -#define EXT2FS_DATE "95/08/09" -#define EXT2FS_VERSION "0.5b" +#define EXT2FS_DATE "95/08/09" +#define EXT2FS_VERSION "0.5b" /* * Special inode numbers */ -#define EXT2_BAD_INO 1 /* Bad blocks inode */ -#define EXT2_ROOT_INO 2 /* Root inode */ -#define EXT2_ACL_IDX_INO 3 /* ACL inode */ -#define EXT2_ACL_DATA_INO 4 /* ACL inode */ -#define EXT2_BOOT_LOADER_INO 5 /* Boot loader inode */ -#define EXT2_UNDEL_DIR_INO 6 /* Undelete directory inode */ -#define EXT2_RESIZE_INO 7 /* Reserved group descriptors inode */ -#define EXT2_JOURNAL_INO 8 /* Journal inode */ +#define EXT2_BAD_INO 1 /* Bad blocks inode */ +#define EXT2_ROOT_INO 2 /* Root inode */ +#define EXT2_ACL_IDX_INO 3 /* ACL inode */ +#define EXT2_ACL_DATA_INO 4 /* ACL inode */ +#define EXT2_BOOT_LOADER_INO 5 /* Boot loader inode */ +#define EXT2_UNDEL_DIR_INO 6 /* Undelete directory inode */ +#define EXT2_RESIZE_INO 7 /* Reserved group descriptors inode */ +#define EXT2_JOURNAL_INO 8 /* Journal inode */ /* First non-reserved inode for old ext2 filesystems */ -#define EXT2_GOOD_OLD_FIRST_INO 11 +#define EXT2_GOOD_OLD_FIRST_INO 11 /* * The second extended file system magic number */ -#define EXT2_SUPER_MAGIC 0xEF53 +#define EXT2_SUPER_MAGIC 0xEF53 #ifdef __KERNEL__ -#define EXT2_SB(sb) (&((sb)->u.ext2_sb)) +# define EXT2_SB(sb) (&((sb)->u.ext2_sb)) #else /* Assume that user mode programs are passing in an ext2fs superblock, not * a kernel struct super_block. This will allow us to call the feature-test * macros from user land. */ -#define EXT2_SB(sb) (sb) +# define EXT2_SB(sb) (sb) #endif /* * Maximal count of links to a file */ -#define EXT2_LINK_MAX 65000 +#define EXT2_LINK_MAX 65000 /* * Macro-instructions used to manage several block sizes */ -#define EXT2_MIN_BLOCK_LOG_SIZE 10 /* 1024 */ -#define EXT2_MAX_BLOCK_LOG_SIZE 16 /* 65536 */ -#define EXT2_MIN_BLOCK_SIZE (1 << EXT2_MIN_BLOCK_LOG_SIZE) -#define EXT2_MAX_BLOCK_SIZE (1 << EXT2_MAX_BLOCK_LOG_SIZE) +#define EXT2_MIN_BLOCK_LOG_SIZE 10 /* 1024 */ +#define EXT2_MAX_BLOCK_LOG_SIZE 16 /* 65536 */ +#define EXT2_MIN_BLOCK_SIZE (1 << EXT2_MIN_BLOCK_LOG_SIZE) +#define EXT2_MAX_BLOCK_SIZE (1 << EXT2_MAX_BLOCK_LOG_SIZE) #ifdef __KERNEL__ -#define EXT2_BLOCK_SIZE(s) ((s)->s_blocksize) -#define EXT2_BLOCK_SIZE_BITS(s) ((s)->s_blocksize_bits) -#define EXT2_ADDR_PER_BLOCK_BITS(s) (EXT2_SB(s)->addr_per_block_bits) -#define EXT2_INODE_SIZE(s) (EXT2_SB(s)->s_inode_size) -#define EXT2_FIRST_INO(s) (EXT2_SB(s)->s_first_ino) +# define EXT2_BLOCK_SIZE(s) ((s)->s_blocksize) +# define EXT2_BLOCK_SIZE_BITS(s) ((s)->s_blocksize_bits) +# define EXT2_ADDR_PER_BLOCK_BITS(s) (EXT2_SB(s)->addr_per_block_bits) +# define EXT2_INODE_SIZE(s) (EXT2_SB(s)->s_inode_size) +# define EXT2_FIRST_INO(s) (EXT2_SB(s)->s_first_ino) #else -#define EXT2_BLOCK_SIZE(s) (EXT2_MIN_BLOCK_SIZE << (s)->s_log_block_size) -#define EXT2_BLOCK_SIZE_BITS(s) ((s)->s_log_block_size + 10) -#define EXT2_INODE_SIZE(s) (((s)->s_rev_level == EXT2_GOOD_OLD_REV) ? \ - EXT2_GOOD_OLD_INODE_SIZE : (s)->s_inode_size) -#define EXT2_FIRST_INO(s) (((s)->s_rev_level == EXT2_GOOD_OLD_REV) ? \ - EXT2_GOOD_OLD_FIRST_INO : (s)->s_first_ino) +# define EXT2_BLOCK_SIZE(s) (EXT2_MIN_BLOCK_SIZE << (s)->s_log_block_size) +# define EXT2_BLOCK_SIZE_BITS(s) ((s)->s_log_block_size + 10) +# define EXT2_INODE_SIZE(s) (((s)->s_rev_level == EXT2_GOOD_OLD_REV) ? EXT2_GOOD_OLD_INODE_SIZE : (s)->s_inode_size) +# define EXT2_FIRST_INO(s) (((s)->s_rev_level == EXT2_GOOD_OLD_REV) ? EXT2_GOOD_OLD_FIRST_INO : (s)->s_first_ino) #endif -#define EXT2_ADDR_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / sizeof(__u32)) +#define EXT2_ADDR_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / sizeof(__u32)) /* * Macro-instructions used to manage fragments */ -#define EXT2_MIN_FRAG_SIZE EXT2_MIN_BLOCK_SIZE -#define EXT2_MAX_FRAG_SIZE EXT2_MAX_BLOCK_SIZE -#define EXT2_MIN_FRAG_LOG_SIZE EXT2_MIN_BLOCK_LOG_SIZE +#define EXT2_MIN_FRAG_SIZE EXT2_MIN_BLOCK_SIZE +#define EXT2_MAX_FRAG_SIZE EXT2_MAX_BLOCK_SIZE +#define EXT2_MIN_FRAG_LOG_SIZE EXT2_MIN_BLOCK_LOG_SIZE #ifdef __KERNEL__ -# define EXT2_FRAG_SIZE(s) (EXT2_SB(s)->s_frag_size) -# define EXT2_FRAGS_PER_BLOCK(s) (EXT2_SB(s)->s_frags_per_block) +# define EXT2_FRAG_SIZE(s) (EXT2_SB(s)->s_frag_size) +# define EXT2_FRAGS_PER_BLOCK(s) (EXT2_SB(s)->s_frags_per_block) #else -# define EXT2_FRAG_SIZE(s) (EXT2_MIN_FRAG_SIZE << (s)->s_log_frag_size) -# define EXT2_FRAGS_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / EXT2_FRAG_SIZE(s)) +# define EXT2_FRAG_SIZE(s) (EXT2_MIN_FRAG_SIZE << (s)->s_log_frag_size) +# define EXT2_FRAGS_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / EXT2_FRAG_SIZE(s)) #endif /* * ACL structures */ -struct ext2_acl_header /* Header of Access Control Lists */ +struct ext2_acl_header /* Header of Access Control Lists */ { - __u32 aclh_size; - __u32 aclh_file_count; - __u32 aclh_acle_count; - __u32 aclh_first_acle; + __u32 aclh_size; + __u32 aclh_file_count; + __u32 aclh_acle_count; + __u32 aclh_first_acle; }; -struct ext2_acl_entry /* Access Control List Entry */ +struct ext2_acl_entry /* Access Control List Entry */ { - __u32 acle_size; - __u16 acle_perms; /* Access permissions */ - __u16 acle_type; /* Type of entry */ - __u16 acle_tag; /* User or group identity */ - __u16 acle_pad1; - __u32 acle_next; /* Pointer on next entry for the */ - /* same inode or on next free entry */ + __u32 acle_size; + __u16 acle_perms; /* Access permissions */ + __u16 acle_type; /* Type of entry */ + __u16 acle_tag; /* User or group identity */ + __u16 acle_pad1; + __u32 acle_next; /* Pointer on next entry for the */ + /* same inode or on next free entry */ }; /* * Structure of a blocks group descriptor */ -struct ext2_group_desc -{ - __u32 bg_block_bitmap; /* Blocks bitmap block */ - __u32 bg_inode_bitmap; /* Inodes bitmap block */ - __u32 bg_inode_table; /* Inodes table block */ - __u16 bg_free_blocks_count; /* Free blocks count */ - __u16 bg_free_inodes_count; /* Free inodes count */ - __u16 bg_used_dirs_count; /* Directories count */ - __u16 bg_flags; - __u32 bg_reserved[2]; - __u16 bg_itable_unused; /* Unused inodes count */ - __u16 bg_checksum; /* crc16(s_uuid+grouo_num+group_desc)*/ +struct ext2_group_desc { + __u32 bg_block_bitmap; /* Blocks bitmap block */ + __u32 bg_inode_bitmap; /* Inodes bitmap block */ + __u32 bg_inode_table; /* Inodes table block */ + __u16 bg_free_blocks_count; /* Free blocks count */ + __u16 bg_free_inodes_count; /* Free inodes count */ + __u16 bg_used_dirs_count; /* Directories count */ + __u16 bg_flags; + __u32 bg_reserved[2]; + __u16 bg_itable_unused; /* Unused inodes count */ + __u16 bg_checksum; /* crc16(s_uuid+grouo_num+group_desc)*/ }; -struct ext4_group_desc -{ - __u32 bg_block_bitmap; /* Blocks bitmap block */ - __u32 bg_inode_bitmap; /* Inodes bitmap block */ - __u32 bg_inode_table; /* Inodes table block */ - __u16 bg_free_blocks_count; /* Free blocks count */ - __u16 bg_free_inodes_count; /* Free inodes count */ - __u16 bg_used_dirs_count; /* Directories count */ - __u16 bg_flags; - __u32 bg_reserved[2]; - __u16 bg_itable_unused; /* Unused inodes count */ - __u16 bg_checksum; /* crc16(s_uuid+grouo_num+group_desc)*/ - __u32 bg_block_bitmap_hi; /* Blocks bitmap block MSB */ - __u32 bg_inode_bitmap_hi; /* Inodes bitmap block MSB */ - __u32 bg_inode_table_hi; /* Inodes table block MSB */ - __u16 bg_free_blocks_count_hi;/* Free blocks count MSB */ - __u16 bg_free_inodes_count_hi;/* Free inodes count MSB */ - __u16 bg_used_dirs_count_hi; /* Directories count MSB */ - __u16 bg_pad; - __u32 bg_reserved2[3]; +struct ext4_group_desc { + __u32 bg_block_bitmap; /* Blocks bitmap block */ + __u32 bg_inode_bitmap; /* Inodes bitmap block */ + __u32 bg_inode_table; /* Inodes table block */ + __u16 bg_free_blocks_count; /* Free blocks count */ + __u16 bg_free_inodes_count; /* Free inodes count */ + __u16 bg_used_dirs_count; /* Directories count */ + __u16 bg_flags; + __u32 bg_reserved[2]; + __u16 bg_itable_unused; /* Unused inodes count */ + __u16 bg_checksum; /* crc16(s_uuid+grouo_num+group_desc)*/ + __u32 bg_block_bitmap_hi; /* Blocks bitmap block MSB */ + __u32 bg_inode_bitmap_hi; /* Inodes bitmap block MSB */ + __u32 bg_inode_table_hi; /* Inodes table block MSB */ + __u16 bg_free_blocks_count_hi; /* Free blocks count MSB */ + __u16 bg_free_inodes_count_hi; /* Free inodes count MSB */ + __u16 bg_used_dirs_count_hi; /* Directories count MSB */ + __u16 bg_pad; + __u32 bg_reserved2[3]; }; -#define EXT2_BG_INODE_UNINIT 0x0001 /* Inode table/bitmap not initialized */ -#define EXT2_BG_BLOCK_UNINIT 0x0002 /* Block bitmap not initialized */ -#define EXT2_BG_INODE_ZEROED 0x0004 /* On-disk itable initialized to zero */ +#define EXT2_BG_INODE_UNINIT 0x0001 /* Inode table/bitmap not initialized */ +#define EXT2_BG_BLOCK_UNINIT 0x0002 /* Block bitmap not initialized */ +#define EXT2_BG_INODE_ZEROED 0x0004 /* On-disk itable initialized to zero */ /* * Data structures used by the directory indexing feature @@ -188,95 +184,93 @@ struct ext4_group_desc * Sincerely, the paranoia department. */ struct ext2_dx_root_info { - __u32 reserved_zero; - __u8 hash_version; /* 0 now, 1 at release */ - __u8 info_length; /* 8 */ - __u8 indirect_levels; - __u8 unused_flags; + __u32 reserved_zero; + __u8 hash_version; /* 0 now, 1 at release */ + __u8 info_length; /* 8 */ + __u8 indirect_levels; + __u8 unused_flags; }; -#define EXT2_HASH_LEGACY 0 -#define EXT2_HASH_HALF_MD4 1 -#define EXT2_HASH_TEA 2 -#define EXT2_HASH_LEGACY_UNSIGNED 3 /* reserved for userspace lib */ -#define EXT2_HASH_HALF_MD4_UNSIGNED 4 /* reserved for userspace lib */ -#define EXT2_HASH_TEA_UNSIGNED 5 /* reserved for userspace lib */ +#define EXT2_HASH_LEGACY 0 +#define EXT2_HASH_HALF_MD4 1 +#define EXT2_HASH_TEA 2 +#define EXT2_HASH_LEGACY_UNSIGNED 3 /* reserved for userspace lib */ +#define EXT2_HASH_HALF_MD4_UNSIGNED 4 /* reserved for userspace lib */ +#define EXT2_HASH_TEA_UNSIGNED 5 /* reserved for userspace lib */ -#define EXT2_HASH_FLAG_INCOMPAT 0x1 +#define EXT2_HASH_FLAG_INCOMPAT 0x1 struct ext2_dx_entry { - __u32 hash; - __u32 block; + __u32 hash; + __u32 block; }; struct ext2_dx_countlimit { - __u16 limit; - __u16 count; + __u16 limit; + __u16 count; }; - /* * Macro-instructions used to manage group descriptors */ -#define EXT2_MIN_DESC_SIZE 32 -#define EXT2_MIN_DESC_SIZE_64BIT 64 -#define EXT2_MAX_DESC_SIZE EXT2_MIN_BLOCK_SIZE -#define EXT2_DESC_SIZE(s) \ - ((EXT2_SB(s)->s_feature_incompat & EXT4_FEATURE_INCOMPAT_64BIT) ? \ - (s)->s_desc_size : EXT2_MIN_DESC_SIZE) +#define EXT2_MIN_DESC_SIZE 32 +#define EXT2_MIN_DESC_SIZE_64BIT 64 +#define EXT2_MAX_DESC_SIZE EXT2_MIN_BLOCK_SIZE +#define EXT2_DESC_SIZE(s) \ + ((EXT2_SB(s)->s_feature_incompat & EXT4_FEATURE_INCOMPAT_64BIT) ? (s)->s_desc_size : EXT2_MIN_DESC_SIZE) -#define EXT2_BLOCKS_PER_GROUP(s) (EXT2_SB(s)->s_blocks_per_group) -#define EXT2_INODES_PER_GROUP(s) (EXT2_SB(s)->s_inodes_per_group) -#define EXT2_INODES_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s)/EXT2_INODE_SIZE(s)) +#define EXT2_BLOCKS_PER_GROUP(s) (EXT2_SB(s)->s_blocks_per_group) +#define EXT2_INODES_PER_GROUP(s) (EXT2_SB(s)->s_inodes_per_group) +#define EXT2_INODES_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / EXT2_INODE_SIZE(s)) /* limits imposed by 16-bit value gd_free_{blocks,inode}_count */ -#define EXT2_MAX_BLOCKS_PER_GROUP(s) ((1 << 16) - 8) -#define EXT2_MAX_INODES_PER_GROUP(s) ((1 << 16) - EXT2_INODES_PER_BLOCK(s)) +#define EXT2_MAX_BLOCKS_PER_GROUP(s) ((1 << 16) - 8) +#define EXT2_MAX_INODES_PER_GROUP(s) ((1 << 16) - EXT2_INODES_PER_BLOCK(s)) #ifdef __KERNEL__ -#define EXT2_DESC_PER_BLOCK(s) (EXT2_SB(s)->s_desc_per_block) -#define EXT2_DESC_PER_BLOCK_BITS(s) (EXT2_SB(s)->s_desc_per_block_bits) +# define EXT2_DESC_PER_BLOCK(s) (EXT2_SB(s)->s_desc_per_block) +# define EXT2_DESC_PER_BLOCK_BITS(s) (EXT2_SB(s)->s_desc_per_block_bits) #else -#define EXT2_DESC_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / EXT2_DESC_SIZE(s)) +# define EXT2_DESC_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / EXT2_DESC_SIZE(s)) #endif /* * Constants relative to the data blocks */ -#define EXT2_NDIR_BLOCKS 12 -#define EXT2_IND_BLOCK EXT2_NDIR_BLOCKS -#define EXT2_DIND_BLOCK (EXT2_IND_BLOCK + 1) -#define EXT2_TIND_BLOCK (EXT2_DIND_BLOCK + 1) -#define EXT2_N_BLOCKS (EXT2_TIND_BLOCK + 1) +#define EXT2_NDIR_BLOCKS 12 +#define EXT2_IND_BLOCK EXT2_NDIR_BLOCKS +#define EXT2_DIND_BLOCK (EXT2_IND_BLOCK + 1) +#define EXT2_TIND_BLOCK (EXT2_DIND_BLOCK + 1) +#define EXT2_N_BLOCKS (EXT2_TIND_BLOCK + 1) /* * Inode flags */ -#define EXT2_SECRM_FL 0x00000001 /* Secure deletion */ -#define EXT2_UNRM_FL 0x00000002 /* Undelete */ -#define EXT2_COMPR_FL 0x00000004 /* Compress file */ -#define EXT2_SYNC_FL 0x00000008 /* Synchronous updates */ -#define EXT2_IMMUTABLE_FL 0x00000010 /* Immutable file */ -#define EXT2_APPEND_FL 0x00000020 /* writes to file may only append */ -#define EXT2_NODUMP_FL 0x00000040 /* do not dump file */ -#define EXT2_NOATIME_FL 0x00000080 /* do not update atime */ +#define EXT2_SECRM_FL 0x00000001 /* Secure deletion */ +#define EXT2_UNRM_FL 0x00000002 /* Undelete */ +#define EXT2_COMPR_FL 0x00000004 /* Compress file */ +#define EXT2_SYNC_FL 0x00000008 /* Synchronous updates */ +#define EXT2_IMMUTABLE_FL 0x00000010 /* Immutable file */ +#define EXT2_APPEND_FL 0x00000020 /* writes to file may only append */ +#define EXT2_NODUMP_FL 0x00000040 /* do not dump file */ +#define EXT2_NOATIME_FL 0x00000080 /* do not update atime */ /* Reserved for compression usage... */ -#define EXT2_DIRTY_FL 0x00000100 -#define EXT2_COMPRBLK_FL 0x00000200 /* One or more compressed clusters */ -#define EXT2_NOCOMPR_FL 0x00000400 /* Access raw compressed data */ -#define EXT2_ECOMPR_FL 0x00000800 /* Compression error */ +#define EXT2_DIRTY_FL 0x00000100 +#define EXT2_COMPRBLK_FL 0x00000200 /* One or more compressed clusters */ +#define EXT2_NOCOMPR_FL 0x00000400 /* Access raw compressed data */ +#define EXT2_ECOMPR_FL 0x00000800 /* Compression error */ /* End compression flags --- maybe not all used */ -#define EXT2_BTREE_FL 0x00001000 /* btree format dir */ -#define EXT2_INDEX_FL 0x00001000 /* hash-indexed directory */ -#define EXT2_IMAGIC_FL 0x00002000 -#define EXT3_JOURNAL_DATA_FL 0x00004000 /* file data should be journaled */ -#define EXT2_NOTAIL_FL 0x00008000 /* file tail should not be merged */ -#define EXT2_DIRSYNC_FL 0x00010000 /* Synchronous directory modifications */ -#define EXT2_TOPDIR_FL 0x00020000 /* Top of directory hierarchies*/ -#define EXT4_HUGE_FILE_FL 0x00040000 /* Set to each huge file */ -#define EXT4_EXTENTS_FL 0x00080000 /* Inode uses extents */ -#define EXT2_RESERVED_FL 0x80000000 /* reserved for ext2 lib */ +#define EXT2_BTREE_FL 0x00001000 /* btree format dir */ +#define EXT2_INDEX_FL 0x00001000 /* hash-indexed directory */ +#define EXT2_IMAGIC_FL 0x00002000 +#define EXT3_JOURNAL_DATA_FL 0x00004000 /* file data should be journaled */ +#define EXT2_NOTAIL_FL 0x00008000 /* file tail should not be merged */ +#define EXT2_DIRSYNC_FL 0x00010000 /* Synchronous directory modifications */ +#define EXT2_TOPDIR_FL 0x00020000 /* Top of directory hierarchies*/ +#define EXT4_HUGE_FILE_FL 0x00040000 /* Set to each huge file */ +#define EXT4_EXTENTS_FL 0x00080000 /* Inode uses extents */ +#define EXT2_RESERVED_FL 0x80000000 /* reserved for ext2 lib */ -#define EXT2_FL_USER_VISIBLE 0x000BDFFF /* User visible flags */ -#define EXT2_FL_USER_MODIFIABLE 0x000080FF /* User modifiable flags */ +#define EXT2_FL_USER_VISIBLE 0x000BDFFF /* User visible flags */ +#define EXT2_FL_USER_MODIFIABLE 0x000080FF /* User modifiable flags */ /* * ioctl commands @@ -284,244 +278,243 @@ struct ext2_dx_countlimit { /* Used for online resize */ struct ext2_new_group_input { - __u32 group; /* Group number for this data */ - __u32 block_bitmap; /* Absolute block number of block bitmap */ - __u32 inode_bitmap; /* Absolute block number of inode bitmap */ - __u32 inode_table; /* Absolute block number of inode table start */ - __u32 blocks_count; /* Total number of blocks in this group */ - __u16 reserved_blocks; /* Number of reserved blocks in this group */ - __u16 unused; /* Number of reserved GDT blocks in group */ + __u32 group; /* Group number for this data */ + __u32 block_bitmap; /* Absolute block number of block bitmap */ + __u32 inode_bitmap; /* Absolute block number of inode bitmap */ + __u32 inode_table; /* Absolute block number of inode table start */ + __u32 blocks_count; /* Total number of blocks in this group */ + __u16 reserved_blocks; /* Number of reserved blocks in this group */ + __u16 unused; /* Number of reserved GDT blocks in group */ }; struct ext4_new_group_input { - __u32 group; /* Group number for this data */ - __u64 block_bitmap; /* Absolute block number of block bitmap */ - __u64 inode_bitmap; /* Absolute block number of inode bitmap */ - __u64 inode_table; /* Absolute block number of inode table start */ - __u32 blocks_count; /* Total number of blocks in this group */ - __u16 reserved_blocks; /* Number of reserved blocks in this group */ - __u16 unused; + __u32 group; /* Group number for this data */ + __u64 block_bitmap; /* Absolute block number of block bitmap */ + __u64 inode_bitmap; /* Absolute block number of inode bitmap */ + __u64 inode_table; /* Absolute block number of inode table start */ + __u32 blocks_count; /* Total number of blocks in this group */ + __u16 reserved_blocks; /* Number of reserved blocks in this group */ + __u16 unused; }; -#ifdef __GNU__ /* Needed for the Hurd */ -#define _IOT_ext2_new_group_input _IOT (_IOTS(__u32), 5, _IOTS(__u16), 2, 0, 0) +#ifdef __GNU__ /* Needed for the Hurd */ +# define _IOT_ext2_new_group_input _IOT(_IOTS(__u32), 5, _IOTS(__u16), 2, 0, 0) #endif -#define EXT2_IOC_GETFLAGS _IOR('f', 1, long) -#define EXT2_IOC_SETFLAGS _IOW('f', 2, long) -#define EXT2_IOC_GETVERSION _IOR('v', 1, long) -#define EXT2_IOC_SETVERSION _IOW('v', 2, long) -#define EXT2_IOC_GETVERSION_NEW _IOR('f', 3, long) -#define EXT2_IOC_SETVERSION_NEW _IOW('f', 4, long) -#define EXT2_IOC_GROUP_EXTEND _IOW('f', 7, unsigned long) -#define EXT2_IOC_GROUP_ADD _IOW('f', 8,struct ext2_new_group_input) -#define EXT4_IOC_GROUP_ADD _IOW('f', 8,struct ext4_new_group_input) +#define EXT2_IOC_GETFLAGS _IOR('f', 1, long) +#define EXT2_IOC_SETFLAGS _IOW('f', 2, long) +#define EXT2_IOC_GETVERSION _IOR('v', 1, long) +#define EXT2_IOC_SETVERSION _IOW('v', 2, long) +#define EXT2_IOC_GETVERSION_NEW _IOR('f', 3, long) +#define EXT2_IOC_SETVERSION_NEW _IOW('f', 4, long) +#define EXT2_IOC_GROUP_EXTEND _IOW('f', 7, unsigned long) +#define EXT2_IOC_GROUP_ADD _IOW('f', 8, struct ext2_new_group_input) +#define EXT4_IOC_GROUP_ADD _IOW('f', 8, struct ext4_new_group_input) /* * Structure of an inode on the disk */ struct ext2_inode { - __u16 i_mode; /* File mode */ - __u16 i_uid; /* Low 16 bits of Owner Uid */ - __u32 i_size; /* Size in bytes */ - __u32 i_atime; /* Access time */ - __u32 i_ctime; /* Inode change time */ - __u32 i_mtime; /* Modification time */ - __u32 i_dtime; /* Deletion Time */ - __u16 i_gid; /* Low 16 bits of Group Id */ - __u16 i_links_count; /* Links count */ - __u32 i_blocks; /* Blocks count */ - __u32 i_flags; /* File flags */ - union { - struct { - __u32 l_i_version; /* was l_i_reserved1 */ - } linux1; - struct { - __u32 h_i_translator; - } hurd1; - } osd1; /* OS dependent 1 */ - __u32 i_block[EXT2_N_BLOCKS];/* Pointers to blocks */ - __u32 i_generation; /* File version (for NFS) */ - __u32 i_file_acl; /* File ACL */ - __u32 i_dir_acl; /* Directory ACL */ - __u32 i_faddr; /* Fragment address */ - union { - struct { - __u16 l_i_blocks_hi; - __u16 l_i_file_acl_high; - __u16 l_i_uid_high; /* these 2 fields */ - __u16 l_i_gid_high; /* were reserved2[0] */ - __u32 l_i_reserved2; - } linux2; - struct { - __u8 h_i_frag; /* Fragment number */ - __u8 h_i_fsize; /* Fragment size */ - __u16 h_i_mode_high; - __u16 h_i_uid_high; - __u16 h_i_gid_high; - __u32 h_i_author; - } hurd2; - } osd2; /* OS dependent 2 */ + __u16 i_mode; /* File mode */ + __u16 i_uid; /* Low 16 bits of Owner Uid */ + __u32 i_size; /* Size in bytes */ + __u32 i_atime; /* Access time */ + __u32 i_ctime; /* Inode change time */ + __u32 i_mtime; /* Modification time */ + __u32 i_dtime; /* Deletion Time */ + __u16 i_gid; /* Low 16 bits of Group Id */ + __u16 i_links_count; /* Links count */ + __u32 i_blocks; /* Blocks count */ + __u32 i_flags; /* File flags */ + union { + struct { + __u32 l_i_version; /* was l_i_reserved1 */ + } linux1; + struct { + __u32 h_i_translator; + } hurd1; + } osd1; /* OS dependent 1 */ + __u32 i_block[EXT2_N_BLOCKS]; /* Pointers to blocks */ + __u32 i_generation; /* File version (for NFS) */ + __u32 i_file_acl; /* File ACL */ + __u32 i_dir_acl; /* Directory ACL */ + __u32 i_faddr; /* Fragment address */ + union { + struct { + __u16 l_i_blocks_hi; + __u16 l_i_file_acl_high; + __u16 l_i_uid_high; /* these 2 fields */ + __u16 l_i_gid_high; /* were reserved2[0] */ + __u32 l_i_reserved2; + } linux2; + struct { + __u8 h_i_frag; /* Fragment number */ + __u8 h_i_fsize; /* Fragment size */ + __u16 h_i_mode_high; + __u16 h_i_uid_high; + __u16 h_i_gid_high; + __u32 h_i_author; + } hurd2; + } osd2; /* OS dependent 2 */ }; /* * Permanent part of an large inode on the disk */ struct ext2_inode_large { - __u16 i_mode; /* File mode */ - __u16 i_uid; /* Low 16 bits of Owner Uid */ - __u32 i_size; /* Size in bytes */ - __u32 i_atime; /* Access time */ - __u32 i_ctime; /* Inode Change time */ - __u32 i_mtime; /* Modification time */ - __u32 i_dtime; /* Deletion Time */ - __u16 i_gid; /* Low 16 bits of Group Id */ - __u16 i_links_count; /* Links count */ - __u32 i_blocks; /* Blocks count */ - __u32 i_flags; /* File flags */ - union { - struct { - __u32 l_i_version; /* was l_i_reserved1 */ - } linux1; - struct { - __u32 h_i_translator; - } hurd1; - } osd1; /* OS dependent 1 */ - __u32 i_block[EXT2_N_BLOCKS];/* Pointers to blocks */ - __u32 i_generation; /* File version (for NFS) */ - __u32 i_file_acl; /* File ACL */ - __u32 i_dir_acl; /* Directory ACL */ - __u32 i_faddr; /* Fragment address */ - union { - struct { - __u16 l_i_blocks_hi; - __u16 l_i_file_acl_high; - __u16 l_i_uid_high; /* these 2 fields */ - __u16 l_i_gid_high; /* were reserved2[0] */ - __u32 l_i_reserved2; - } linux2; - struct { - __u8 h_i_frag; /* Fragment number */ - __u8 h_i_fsize; /* Fragment size */ - __u16 h_i_mode_high; - __u16 h_i_uid_high; - __u16 h_i_gid_high; - __u32 h_i_author; - } hurd2; - } osd2; /* OS dependent 2 */ - __u16 i_extra_isize; - __u16 i_pad1; - __u32 i_ctime_extra; /* extra Change time (nsec << 2 | epoch) */ - __u32 i_mtime_extra; /* extra Modification time (nsec << 2 | epoch) */ - __u32 i_atime_extra; /* extra Access time (nsec << 2 | epoch) */ - __u32 i_crtime; /* File creation time */ - __u32 i_crtime_extra; /* extra File creation time (nsec << 2 | epoch)*/ - __u32 i_version_hi; /* high 32 bits for 64-bit version */ + __u16 i_mode; /* File mode */ + __u16 i_uid; /* Low 16 bits of Owner Uid */ + __u32 i_size; /* Size in bytes */ + __u32 i_atime; /* Access time */ + __u32 i_ctime; /* Inode Change time */ + __u32 i_mtime; /* Modification time */ + __u32 i_dtime; /* Deletion Time */ + __u16 i_gid; /* Low 16 bits of Group Id */ + __u16 i_links_count; /* Links count */ + __u32 i_blocks; /* Blocks count */ + __u32 i_flags; /* File flags */ + union { + struct { + __u32 l_i_version; /* was l_i_reserved1 */ + } linux1; + struct { + __u32 h_i_translator; + } hurd1; + } osd1; /* OS dependent 1 */ + __u32 i_block[EXT2_N_BLOCKS]; /* Pointers to blocks */ + __u32 i_generation; /* File version (for NFS) */ + __u32 i_file_acl; /* File ACL */ + __u32 i_dir_acl; /* Directory ACL */ + __u32 i_faddr; /* Fragment address */ + union { + struct { + __u16 l_i_blocks_hi; + __u16 l_i_file_acl_high; + __u16 l_i_uid_high; /* these 2 fields */ + __u16 l_i_gid_high; /* were reserved2[0] */ + __u32 l_i_reserved2; + } linux2; + struct { + __u8 h_i_frag; /* Fragment number */ + __u8 h_i_fsize; /* Fragment size */ + __u16 h_i_mode_high; + __u16 h_i_uid_high; + __u16 h_i_gid_high; + __u32 h_i_author; + } hurd2; + } osd2; /* OS dependent 2 */ + __u16 i_extra_isize; + __u16 i_pad1; + __u32 i_ctime_extra; /* extra Change time (nsec << 2 | epoch) */ + __u32 i_mtime_extra; /* extra Modification time (nsec << 2 | epoch) */ + __u32 i_atime_extra; /* extra Access time (nsec << 2 | epoch) */ + __u32 i_crtime; /* File creation time */ + __u32 i_crtime_extra; /* extra File creation time (nsec << 2 | epoch)*/ + __u32 i_version_hi; /* high 32 bits for 64-bit version */ }; -#define i_size_high i_dir_acl +#define i_size_high i_dir_acl #if defined(__KERNEL__) || defined(__linux__) -#define i_reserved1 osd1.linux1.l_i_reserved1 -#define i_frag osd2.linux2.l_i_frag -#define i_fsize osd2.linux2.l_i_fsize -#define i_uid_low i_uid -#define i_gid_low i_gid -#define i_uid_high osd2.linux2.l_i_uid_high -#define i_gid_high osd2.linux2.l_i_gid_high -#define i_reserved2 osd2.linux2.l_i_reserved2 +# define i_reserved1 osd1.linux1.l_i_reserved1 +# define i_frag osd2.linux2.l_i_frag +# define i_fsize osd2.linux2.l_i_fsize +# define i_uid_low i_uid +# define i_gid_low i_gid +# define i_uid_high osd2.linux2.l_i_uid_high +# define i_gid_high osd2.linux2.l_i_gid_high +# define i_reserved2 osd2.linux2.l_i_reserved2 #else -#if defined(__GNU__) +# if defined(__GNU__) -#define i_translator osd1.hurd1.h_i_translator -#define i_frag osd2.hurd2.h_i_frag; -#define i_fsize osd2.hurd2.h_i_fsize; -#define i_uid_high osd2.hurd2.h_i_uid_high -#define i_gid_high osd2.hurd2.h_i_gid_high -#define i_author osd2.hurd2.h_i_author +# define i_translator osd1.hurd1.h_i_translator +# define i_frag osd2.hurd2.h_i_frag; +# define i_fsize osd2.hurd2.h_i_fsize; +# define i_uid_high osd2.hurd2.h_i_uid_high +# define i_gid_high osd2.hurd2.h_i_gid_high +# define i_author osd2.hurd2.h_i_author -#endif /* __GNU__ */ -#endif /* defined(__KERNEL__) || defined(__linux__) */ +# endif /* __GNU__ */ +#endif /* defined(__KERNEL__) || defined(__linux__) */ -#define inode_uid(inode) ((inode).i_uid | (inode).osd2.linux2.l_i_uid_high << 16) -#define inode_gid(inode) ((inode).i_gid | (inode).osd2.linux2.l_i_gid_high << 16) -#define ext2fs_set_i_uid_high(inode,x) ((inode).osd2.linux2.l_i_uid_high = (x)) -#define ext2fs_set_i_gid_high(inode,x) ((inode).osd2.linux2.l_i_gid_high = (x)) +#define inode_uid(inode) ((inode).i_uid | (inode).osd2.linux2.l_i_uid_high << 16) +#define inode_gid(inode) ((inode).i_gid | (inode).osd2.linux2.l_i_gid_high << 16) +#define ext2fs_set_i_uid_high(inode, x) ((inode).osd2.linux2.l_i_uid_high = (x)) +#define ext2fs_set_i_gid_high(inode, x) ((inode).osd2.linux2.l_i_gid_high = (x)) /* * File system states */ -#define EXT2_VALID_FS 0x0001 /* Unmounted cleanly */ -#define EXT2_ERROR_FS 0x0002 /* Errors detected */ -#define EXT3_ORPHAN_FS 0x0004 /* Orphans being recovered */ +#define EXT2_VALID_FS 0x0001 /* Unmounted cleanly */ +#define EXT2_ERROR_FS 0x0002 /* Errors detected */ +#define EXT3_ORPHAN_FS 0x0004 /* Orphans being recovered */ /* * Misc. filesystem flags */ -#define EXT2_FLAGS_SIGNED_HASH 0x0001 /* Signed dirhash in use */ -#define EXT2_FLAGS_UNSIGNED_HASH 0x0002 /* Unsigned dirhash in use */ -#define EXT2_FLAGS_TEST_FILESYS 0x0004 /* OK for use on development code */ +#define EXT2_FLAGS_SIGNED_HASH 0x0001 /* Signed dirhash in use */ +#define EXT2_FLAGS_UNSIGNED_HASH 0x0002 /* Unsigned dirhash in use */ +#define EXT2_FLAGS_TEST_FILESYS 0x0004 /* OK for use on development code */ /* * Mount flags */ -#define EXT2_MOUNT_CHECK 0x0001 /* Do mount-time checks */ -#define EXT2_MOUNT_GRPID 0x0004 /* Create files with directory's group */ -#define EXT2_MOUNT_DEBUG 0x0008 /* Some debugging messages */ -#define EXT2_MOUNT_ERRORS_CONT 0x0010 /* Continue on errors */ -#define EXT2_MOUNT_ERRORS_RO 0x0020 /* Remount fs ro on errors */ -#define EXT2_MOUNT_ERRORS_PANIC 0x0040 /* Panic on errors */ -#define EXT2_MOUNT_MINIX_DF 0x0080 /* Mimics the Minix statfs */ -#define EXT2_MOUNT_NO_UID32 0x0200 /* Disable 32-bit UIDs */ +#define EXT2_MOUNT_CHECK 0x0001 /* Do mount-time checks */ +#define EXT2_MOUNT_GRPID 0x0004 /* Create files with directory's group */ +#define EXT2_MOUNT_DEBUG 0x0008 /* Some debugging messages */ +#define EXT2_MOUNT_ERRORS_CONT 0x0010 /* Continue on errors */ +#define EXT2_MOUNT_ERRORS_RO 0x0020 /* Remount fs ro on errors */ +#define EXT2_MOUNT_ERRORS_PANIC 0x0040 /* Panic on errors */ +#define EXT2_MOUNT_MINIX_DF 0x0080 /* Mimics the Minix statfs */ +#define EXT2_MOUNT_NO_UID32 0x0200 /* Disable 32-bit UIDs */ -#define clear_opt(o, opt) o &= ~EXT2_MOUNT_##opt -#define set_opt(o, opt) o |= EXT2_MOUNT_##opt -#define test_opt(sb, opt) (EXT2_SB(sb)->s_mount_opt & \ - EXT2_MOUNT_##opt) +#define clear_opt(o, opt) o &= ~EXT2_MOUNT_##opt +#define set_opt(o, opt) o |= EXT2_MOUNT_##opt +#define test_opt(sb, opt) (EXT2_SB(sb)->s_mount_opt & EXT2_MOUNT_##opt) /* * Maximal mount counts between two filesystem checks */ -#define EXT2_DFL_MAX_MNT_COUNT 20 /* Allow 20 mounts */ -#define EXT2_DFL_CHECKINTERVAL 0 /* Don't use interval check */ +#define EXT2_DFL_MAX_MNT_COUNT 20 /* Allow 20 mounts */ +#define EXT2_DFL_CHECKINTERVAL 0 /* Don't use interval check */ /* * Behaviour when detecting errors */ -#define EXT2_ERRORS_CONTINUE 1 /* Continue execution */ -#define EXT2_ERRORS_RO 2 /* Remount fs read-only */ -#define EXT2_ERRORS_PANIC 3 /* Panic */ -#define EXT2_ERRORS_DEFAULT EXT2_ERRORS_CONTINUE +#define EXT2_ERRORS_CONTINUE 1 /* Continue execution */ +#define EXT2_ERRORS_RO 2 /* Remount fs read-only */ +#define EXT2_ERRORS_PANIC 3 /* Panic */ +#define EXT2_ERRORS_DEFAULT EXT2_ERRORS_CONTINUE /* * Structure of the super block */ struct ext2_super_block { - __u32 s_inodes_count; /* Inodes count */ - __u32 s_blocks_count; /* Blocks count */ - __u32 s_r_blocks_count; /* Reserved blocks count */ - __u32 s_free_blocks_count; /* Free blocks count */ - __u32 s_free_inodes_count; /* Free inodes count */ - __u32 s_first_data_block; /* First Data Block */ - __u32 s_log_block_size; /* Block size */ - __s32 s_log_frag_size; /* Fragment size */ - __u32 s_blocks_per_group; /* # Blocks per group */ - __u32 s_frags_per_group; /* # Fragments per group */ - __u32 s_inodes_per_group; /* # Inodes per group */ - __u32 s_mtime; /* Mount time */ - __u32 s_wtime; /* Write time */ - __u16 s_mnt_count; /* Mount count */ - __s16 s_max_mnt_count; /* Maximal mount count */ - __u16 s_magic; /* Magic signature */ - __u16 s_state; /* File system state */ - __u16 s_errors; /* Behaviour when detecting errors */ - __u16 s_minor_rev_level; /* minor revision level */ - __u32 s_lastcheck; /* time of last check */ - __u32 s_checkinterval; /* max. time between checks */ - __u32 s_creator_os; /* OS */ - __u32 s_rev_level; /* Revision level */ - __u16 s_def_resuid; /* Default uid for reserved blocks */ - __u16 s_def_resgid; /* Default gid for reserved blocks */ - /* + __u32 s_inodes_count; /* Inodes count */ + __u32 s_blocks_count; /* Blocks count */ + __u32 s_r_blocks_count; /* Reserved blocks count */ + __u32 s_free_blocks_count; /* Free blocks count */ + __u32 s_free_inodes_count; /* Free inodes count */ + __u32 s_first_data_block; /* First Data Block */ + __u32 s_log_block_size; /* Block size */ + __s32 s_log_frag_size; /* Fragment size */ + __u32 s_blocks_per_group; /* # Blocks per group */ + __u32 s_frags_per_group; /* # Fragments per group */ + __u32 s_inodes_per_group; /* # Inodes per group */ + __u32 s_mtime; /* Mount time */ + __u32 s_wtime; /* Write time */ + __u16 s_mnt_count; /* Mount count */ + __s16 s_max_mnt_count; /* Maximal mount count */ + __u16 s_magic; /* Magic signature */ + __u16 s_state; /* File system state */ + __u16 s_errors; /* Behaviour when detecting errors */ + __u16 s_minor_rev_level; /* minor revision level */ + __u32 s_lastcheck; /* time of last check */ + __u32 s_checkinterval; /* max. time between checks */ + __u32 s_creator_os; /* OS */ + __u32 s_rev_level; /* Revision level */ + __u16 s_def_resuid; /* Default uid for reserved blocks */ + __u16 s_def_resgid; /* Default gid for reserved blocks */ + /* * These fields are for EXT2_DYNAMIC_REV superblocks only. * * Note: the difference between the compatible feature set and @@ -534,142 +527,138 @@ struct ext2_super_block { * feature set, it must abort and not try to meddle with * things it doesn't understand... */ - __u32 s_first_ino; /* First non-reserved inode */ - __u16 s_inode_size; /* size of inode structure */ - __u16 s_block_group_nr; /* block group # of this superblock */ - __u32 s_feature_compat; /* compatible feature set */ - __u32 s_feature_incompat; /* incompatible feature set */ - __u32 s_feature_ro_compat; /* readonly-compatible feature set */ - __u8 s_uuid[16]; /* 128-bit uuid for volume */ - char s_volume_name[16]; /* volume name */ - char s_last_mounted[64]; /* directory where last mounted */ - __u32 s_algorithm_usage_bitmap; /* For compression */ - /* + __u32 s_first_ino; /* First non-reserved inode */ + __u16 s_inode_size; /* size of inode structure */ + __u16 s_block_group_nr; /* block group # of this superblock */ + __u32 s_feature_compat; /* compatible feature set */ + __u32 s_feature_incompat; /* incompatible feature set */ + __u32 s_feature_ro_compat; /* readonly-compatible feature set */ + __u8 s_uuid[16]; /* 128-bit uuid for volume */ + char s_volume_name[16]; /* volume name */ + char s_last_mounted[64]; /* directory where last mounted */ + __u32 s_algorithm_usage_bitmap; /* For compression */ + /* * Performance hints. Directory preallocation should only * happen if the EXT2_FEATURE_COMPAT_DIR_PREALLOC flag is on. */ - __u8 s_prealloc_blocks; /* Nr of blocks to try to preallocate*/ - __u8 s_prealloc_dir_blocks; /* Nr to preallocate for dirs */ - __u16 s_reserved_gdt_blocks; /* Per group table for online growth */ - /* + __u8 s_prealloc_blocks; /* Nr of blocks to try to preallocate*/ + __u8 s_prealloc_dir_blocks; /* Nr to preallocate for dirs */ + __u16 s_reserved_gdt_blocks; /* Per group table for online growth */ + /* * Journaling support valid if EXT2_FEATURE_COMPAT_HAS_JOURNAL set. */ - __u8 s_journal_uuid[16]; /* uuid of journal superblock */ - __u32 s_journal_inum; /* inode number of journal file */ - __u32 s_journal_dev; /* device number of journal file */ - __u32 s_last_orphan; /* start of list of inodes to delete */ - __u32 s_hash_seed[4]; /* HTREE hash seed */ - __u8 s_def_hash_version; /* Default hash version to use */ - __u8 s_jnl_backup_type; /* Default type of journal backup */ - __u16 s_desc_size; /* Group desc. size: INCOMPAT_64BIT */ - __u32 s_default_mount_opts; - __u32 s_first_meta_bg; /* First metablock group */ - __u32 s_mkfs_time; /* When the filesystem was created */ - __u32 s_jnl_blocks[17]; /* Backup of the journal inode */ - __u32 s_blocks_count_hi; /* Blocks count high 32bits */ - __u32 s_r_blocks_count_hi; /* Reserved blocks count high 32 bits*/ - __u32 s_free_blocks_hi; /* Free blocks count */ - __u16 s_min_extra_isize; /* All inodes have at least # bytes */ - __u16 s_want_extra_isize; /* New inodes should reserve # bytes */ - __u32 s_flags; /* Miscellaneous flags */ - __u16 s_raid_stride; /* RAID stride */ - __u16 s_mmp_interval; /* # seconds to wait in MMP checking */ - __u64 s_mmp_block; /* Block for multi-mount protection */ - __u32 s_raid_stripe_width; /* blocks on all data disks (N*stride)*/ - __u8 s_log_groups_per_flex; /* FLEX_BG group size */ - __u8 s_reserved_char_pad; - __u16 s_reserved_pad; /* Padding to next 32bits */ - __u32 s_reserved[162]; /* Padding to the end of the block */ + __u8 s_journal_uuid[16]; /* uuid of journal superblock */ + __u32 s_journal_inum; /* inode number of journal file */ + __u32 s_journal_dev; /* device number of journal file */ + __u32 s_last_orphan; /* start of list of inodes to delete */ + __u32 s_hash_seed[4]; /* HTREE hash seed */ + __u8 s_def_hash_version; /* Default hash version to use */ + __u8 s_jnl_backup_type; /* Default type of journal backup */ + __u16 s_desc_size; /* Group desc. size: INCOMPAT_64BIT */ + __u32 s_default_mount_opts; + __u32 s_first_meta_bg; /* First metablock group */ + __u32 s_mkfs_time; /* When the filesystem was created */ + __u32 s_jnl_blocks[17]; /* Backup of the journal inode */ + __u32 s_blocks_count_hi; /* Blocks count high 32bits */ + __u32 s_r_blocks_count_hi; /* Reserved blocks count high 32 bits*/ + __u32 s_free_blocks_hi; /* Free blocks count */ + __u16 s_min_extra_isize; /* All inodes have at least # bytes */ + __u16 s_want_extra_isize; /* New inodes should reserve # bytes */ + __u32 s_flags; /* Miscellaneous flags */ + __u16 s_raid_stride; /* RAID stride */ + __u16 s_mmp_interval; /* # seconds to wait in MMP checking */ + __u64 s_mmp_block; /* Block for multi-mount protection */ + __u32 s_raid_stripe_width; /* blocks on all data disks (N*stride)*/ + __u8 s_log_groups_per_flex; /* FLEX_BG group size */ + __u8 s_reserved_char_pad; + __u16 s_reserved_pad; /* Padding to next 32bits */ + __u32 s_reserved[162]; /* Padding to the end of the block */ }; /* * Codes for operating systems */ -#define EXT2_OS_LINUX 0 -#define EXT2_OS_HURD 1 -#define EXT2_OBSO_OS_MASIX 2 -#define EXT2_OS_FREEBSD 3 -#define EXT2_OS_LITES 4 +#define EXT2_OS_LINUX 0 +#define EXT2_OS_HURD 1 +#define EXT2_OBSO_OS_MASIX 2 +#define EXT2_OS_FREEBSD 3 +#define EXT2_OS_LITES 4 /* * Revision levels */ -#define EXT2_GOOD_OLD_REV 0 /* The good old (original) format */ -#define EXT2_DYNAMIC_REV 1 /* V2 format w/ dynamic inode sizes */ +#define EXT2_GOOD_OLD_REV 0 /* The good old (original) format */ +#define EXT2_DYNAMIC_REV 1 /* V2 format w/ dynamic inode sizes */ -#define EXT2_CURRENT_REV EXT2_GOOD_OLD_REV -#define EXT2_MAX_SUPP_REV EXT2_DYNAMIC_REV +#define EXT2_CURRENT_REV EXT2_GOOD_OLD_REV +#define EXT2_MAX_SUPP_REV EXT2_DYNAMIC_REV #define EXT2_GOOD_OLD_INODE_SIZE 128 /* * Journal inode backup types */ -#define EXT3_JNL_BACKUP_BLOCKS 1 +#define EXT3_JNL_BACKUP_BLOCKS 1 /* * Feature set definitions */ -#define EXT2_HAS_COMPAT_FEATURE(sb,mask) \ - ( EXT2_SB(sb)->s_feature_compat & (mask) ) -#define EXT2_HAS_RO_COMPAT_FEATURE(sb,mask) \ - ( EXT2_SB(sb)->s_feature_ro_compat & (mask) ) -#define EXT2_HAS_INCOMPAT_FEATURE(sb,mask) \ - ( EXT2_SB(sb)->s_feature_incompat & (mask) ) +#define EXT2_HAS_COMPAT_FEATURE(sb, mask) \ + (EXT2_SB(sb)->s_feature_compat & (mask)) +#define EXT2_HAS_RO_COMPAT_FEATURE(sb, mask) \ + (EXT2_SB(sb)->s_feature_ro_compat & (mask)) +#define EXT2_HAS_INCOMPAT_FEATURE(sb, mask) \ + (EXT2_SB(sb)->s_feature_incompat & (mask)) -#define EXT2_FEATURE_COMPAT_DIR_PREALLOC 0x0001 -#define EXT2_FEATURE_COMPAT_IMAGIC_INODES 0x0002 -#define EXT3_FEATURE_COMPAT_HAS_JOURNAL 0x0004 -#define EXT2_FEATURE_COMPAT_EXT_ATTR 0x0008 -#define EXT2_FEATURE_COMPAT_RESIZE_INODE 0x0010 -#define EXT2_FEATURE_COMPAT_DIR_INDEX 0x0020 -#define EXT2_FEATURE_COMPAT_LAZY_BG 0x0040 +#define EXT2_FEATURE_COMPAT_DIR_PREALLOC 0x0001 +#define EXT2_FEATURE_COMPAT_IMAGIC_INODES 0x0002 +#define EXT3_FEATURE_COMPAT_HAS_JOURNAL 0x0004 +#define EXT2_FEATURE_COMPAT_EXT_ATTR 0x0008 +#define EXT2_FEATURE_COMPAT_RESIZE_INODE 0x0010 +#define EXT2_FEATURE_COMPAT_DIR_INDEX 0x0020 +#define EXT2_FEATURE_COMPAT_LAZY_BG 0x0040 -#define EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER 0x0001 -#define EXT2_FEATURE_RO_COMPAT_LARGE_FILE 0x0002 +#define EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER 0x0001 +#define EXT2_FEATURE_RO_COMPAT_LARGE_FILE 0x0002 /* #define EXT2_FEATURE_RO_COMPAT_BTREE_DIR 0x0004 not used */ -#define EXT4_FEATURE_RO_COMPAT_HUGE_FILE 0x0008 -#define EXT4_FEATURE_RO_COMPAT_GDT_CSUM 0x0010 -#define EXT4_FEATURE_RO_COMPAT_DIR_NLINK 0x0020 -#define EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE 0x0040 - -#define EXT2_FEATURE_INCOMPAT_COMPRESSION 0x0001 -#define EXT2_FEATURE_INCOMPAT_FILETYPE 0x0002 -#define EXT3_FEATURE_INCOMPAT_RECOVER 0x0004 /* Needs recovery */ -#define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x0008 /* Journal device */ -#define EXT2_FEATURE_INCOMPAT_META_BG 0x0010 -#define EXT3_FEATURE_INCOMPAT_EXTENTS 0x0040 -#define EXT4_FEATURE_INCOMPAT_64BIT 0x0080 -#define EXT4_FEATURE_INCOMPAT_MMP 0x0100 -#define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200 - - -#define EXT2_FEATURE_COMPAT_SUPP 0 -#define EXT2_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE) -#define EXT2_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \ - EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \ - EXT4_FEATURE_RO_COMPAT_DIR_NLINK| \ - EXT2_FEATURE_RO_COMPAT_BTREE_DIR) +#define EXT4_FEATURE_RO_COMPAT_HUGE_FILE 0x0008 +#define EXT4_FEATURE_RO_COMPAT_GDT_CSUM 0x0010 +#define EXT4_FEATURE_RO_COMPAT_DIR_NLINK 0x0020 +#define EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE 0x0040 + +#define EXT2_FEATURE_INCOMPAT_COMPRESSION 0x0001 +#define EXT2_FEATURE_INCOMPAT_FILETYPE 0x0002 +#define EXT3_FEATURE_INCOMPAT_RECOVER 0x0004 /* Needs recovery */ +#define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x0008 /* Journal device */ +#define EXT2_FEATURE_INCOMPAT_META_BG 0x0010 +#define EXT3_FEATURE_INCOMPAT_EXTENTS 0x0040 +#define EXT4_FEATURE_INCOMPAT_64BIT 0x0080 +#define EXT4_FEATURE_INCOMPAT_MMP 0x0100 +#define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200 + +#define EXT2_FEATURE_COMPAT_SUPP 0 +#define EXT2_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE) +#define EXT2_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER | EXT2_FEATURE_RO_COMPAT_LARGE_FILE | EXT4_FEATURE_RO_COMPAT_DIR_NLINK | EXT2_FEATURE_RO_COMPAT_BTREE_DIR) /* * Default values for user and/or group using reserved blocks */ -#define EXT2_DEF_RESUID 0 -#define EXT2_DEF_RESGID 0 +#define EXT2_DEF_RESUID 0 +#define EXT2_DEF_RESGID 0 /* * Default mount options */ -#define EXT2_DEFM_DEBUG 0x0001 -#define EXT2_DEFM_BSDGROUPS 0x0002 -#define EXT2_DEFM_XATTR_USER 0x0004 -#define EXT2_DEFM_ACL 0x0008 -#define EXT2_DEFM_UID16 0x0010 -#define EXT3_DEFM_JMODE 0x0060 -#define EXT3_DEFM_JMODE_DATA 0x0020 -#define EXT3_DEFM_JMODE_ORDERED 0x0040 -#define EXT3_DEFM_JMODE_WBACK 0x0060 +#define EXT2_DEFM_DEBUG 0x0001 +#define EXT2_DEFM_BSDGROUPS 0x0002 +#define EXT2_DEFM_XATTR_USER 0x0004 +#define EXT2_DEFM_ACL 0x0008 +#define EXT2_DEFM_UID16 0x0010 +#define EXT3_DEFM_JMODE 0x0060 +#define EXT3_DEFM_JMODE_DATA 0x0020 +#define EXT3_DEFM_JMODE_ORDERED 0x0040 +#define EXT3_DEFM_JMODE_WBACK 0x0060 /* * Structure of a directory entry @@ -677,10 +666,10 @@ struct ext2_super_block { #define EXT2_NAME_LEN 255 struct ext2_dir_entry { - __u32 inode; /* Inode number */ - __u16 rec_len; /* Directory entry length */ - __u16 name_len; /* Name length */ - char name[EXT2_NAME_LEN]; /* File name */ + __u32 inode; /* Inode number */ + __u16 rec_len; /* Directory entry length */ + __u16 name_len; /* Name length */ + char name[EXT2_NAME_LEN]; /* File name */ }; /* @@ -690,61 +679,60 @@ struct ext2_dir_entry { * file_type field. */ struct ext2_dir_entry_2 { - __u32 inode; /* Inode number */ - __u16 rec_len; /* Directory entry length */ - __u8 name_len; /* Name length */ - __u8 file_type; - char name[EXT2_NAME_LEN]; /* File name */ + __u32 inode; /* Inode number */ + __u16 rec_len; /* Directory entry length */ + __u8 name_len; /* Name length */ + __u8 file_type; + char name[EXT2_NAME_LEN]; /* File name */ }; /* * Ext2 directory file types. Only the low 3 bits are used. The * other bits are reserved for now. */ -#define EXT2_FT_UNKNOWN 0 -#define EXT2_FT_REG_FILE 1 -#define EXT2_FT_DIR 2 -#define EXT2_FT_CHRDEV 3 -#define EXT2_FT_BLKDEV 4 -#define EXT2_FT_FIFO 5 -#define EXT2_FT_SOCK 6 -#define EXT2_FT_SYMLINK 7 +#define EXT2_FT_UNKNOWN 0 +#define EXT2_FT_REG_FILE 1 +#define EXT2_FT_DIR 2 +#define EXT2_FT_CHRDEV 3 +#define EXT2_FT_BLKDEV 4 +#define EXT2_FT_FIFO 5 +#define EXT2_FT_SOCK 6 +#define EXT2_FT_SYMLINK 7 -#define EXT2_FT_MAX 8 +#define EXT2_FT_MAX 8 /* * EXT2_DIR_PAD defines the directory entries boundaries * * NOTE: It must be a multiple of 4 */ -#define EXT2_DIR_PAD 4 -#define EXT2_DIR_ROUND (EXT2_DIR_PAD - 1) -#define EXT2_DIR_REC_LEN(name_len) (((name_len) + 8 + EXT2_DIR_ROUND) & \ - ~EXT2_DIR_ROUND) +#define EXT2_DIR_PAD 4 +#define EXT2_DIR_ROUND (EXT2_DIR_PAD - 1) +#define EXT2_DIR_REC_LEN(name_len) (((name_len) + 8 + EXT2_DIR_ROUND) & ~EXT2_DIR_ROUND) /* * This structure will be used for multiple mount protection. It will be * written into the block number saved in the s_mmp_block field in the * superblock. */ -#define EXT2_MMP_MAGIC 0x004D4D50 /* ASCII for MMP */ -#define EXT2_MMP_CLEAN 0xFF4D4D50 /* Value of mmp_seq for clean unmount */ -#define EXT2_MMP_FSCK_ON 0xE24D4D50 /* Value of mmp_seq when being fscked */ +#define EXT2_MMP_MAGIC 0x004D4D50 /* ASCII for MMP */ +#define EXT2_MMP_CLEAN 0xFF4D4D50 /* Value of mmp_seq for clean unmount */ +#define EXT2_MMP_FSCK_ON 0xE24D4D50 /* Value of mmp_seq when being fscked */ struct mmp_struct { - __u32 mmp_magic; - __u32 mmp_seq; - __u64 mmp_time; - char mmp_nodename[64]; - char mmp_bdevname[32]; - __u16 mmp_interval; - __u16 mmp_pad1; - __u32 mmp_pad2; + __u32 mmp_magic; + __u32 mmp_seq; + __u64 mmp_time; + char mmp_nodename[64]; + char mmp_bdevname[32]; + __u16 mmp_interval; + __u16 mmp_pad1; + __u32 mmp_pad2; }; /* * Interval in number of seconds to update the MMP sequence number. */ -#define EXT2_MMP_DEF_INTERVAL 5 +#define EXT2_MMP_DEF_INTERVAL 5 -#endif /* _LINUX_EXT2_FS_H */ +#endif /* _LINUX_EXT2_FS_H */ diff --git a/Kernel/FileSystem/ext2_types.h b/Kernel/FileSystem/ext2_types.h index 27277fa3fe..10160466cf 100644 --- a/Kernel/FileSystem/ext2_types.h +++ b/Kernel/FileSystem/ext2_types.h @@ -3,140 +3,141 @@ * everything we need. (cross fingers) Other header files may have * also defined the types that we need. */ -#if (!defined(_LINUX_TYPES_H) && !defined(_BLKID_TYPES_H) && \ - !defined(_EXT2_TYPES_H)) -#define _EXT2_TYPES_H +#if (!defined(_LINUX_TYPES_H) && !defined(_BLKID_TYPES_H) && !defined(_EXT2_TYPES_H)) +# define _EXT2_TYPES_H -#define __S8_TYPEDEF __signed__ char -#define __U8_TYPEDEF unsigned char -#define __S16_TYPEDEF __signed__ short -#define __U16_TYPEDEF unsigned short -#define __S32_TYPEDEF __signed__ int -#define __U32_TYPEDEF unsigned int -#define __S64_TYPEDEF __signed__ long long -#define __U64_TYPEDEF unsigned long long +# define __S8_TYPEDEF __signed__ char +# define __U8_TYPEDEF unsigned char +# define __S16_TYPEDEF __signed__ short +# define __U16_TYPEDEF unsigned short +# define __S32_TYPEDEF __signed__ int +# define __U32_TYPEDEF unsigned int +# define __S64_TYPEDEF __signed__ long long +# define __U64_TYPEDEF unsigned long long -#ifdef __U8_TYPEDEF +# ifdef __U8_TYPEDEF typedef __U8_TYPEDEF __u8; -#else +# else typedef unsigned char __u8; -#endif +# endif -#ifdef __S8_TYPEDEF +# ifdef __S8_TYPEDEF typedef __S8_TYPEDEF __s8; -#else +# else typedef signed char __s8; -#endif +# endif -#ifdef __U16_TYPEDEF +# ifdef __U16_TYPEDEF typedef __U16_TYPEDEF __u16; -#else -#if (4 == 2) -typedef unsigned int __u16; -#else -#if (2 == 2) -typedef unsigned short __u16; -#else - ?==error: undefined 16 bit type -#endif /* SIZEOF_SHORT == 2 */ -#endif /* SIZEOF_INT == 2 */ -#endif /* __U16_TYPEDEF */ +# else +# if (4 == 2) +typedef unsigned int __u16; +# else +# if (2 == 2) +typedef unsigned short __u16; +# else +? == error : undefined 16 bit type +# endif /* SIZEOF_SHORT == 2 */ +# endif /* SIZEOF_INT == 2 */ +# endif /* __U16_TYPEDEF */ -#ifdef __S16_TYPEDEF +# ifdef __S16_TYPEDEF typedef __S16_TYPEDEF __s16; -#else -#if (4 == 2) -typedef int __s16; -#else -#if (2 == 2) -typedef short __s16; -#else - ?==error: undefined 16 bit type -#endif /* SIZEOF_SHORT == 2 */ -#endif /* SIZEOF_INT == 2 */ -#endif /* __S16_TYPEDEF */ +# else +# if (4 == 2) +typedef int __s16; +# else +# if (2 == 2) +typedef short __s16; +# else + ? == error + : undefined 16 bit type +# endif /* SIZEOF_SHORT == 2 */ +# endif /* SIZEOF_INT == 2 */ +# endif /* __S16_TYPEDEF */ - -#ifdef __U32_TYPEDEF +# ifdef __U32_TYPEDEF typedef __U32_TYPEDEF __u32; -#else -#if (4 == 4) -typedef unsigned int __u32; -#else -#if (4 == 4) -typedef unsigned long __u32; -#else -#if (2 == 4) -typedef unsigned short __u32; -#else - ?== error: undefined 32 bit type -#endif /* SIZEOF_SHORT == 4 */ -#endif /* SIZEOF_LONG == 4 */ -#endif /* SIZEOF_INT == 4 */ -#endif /* __U32_TYPEDEF */ +# else +# if (4 == 4) +typedef unsigned int __u32; +# else +# if (4 == 4) +typedef unsigned long __u32; +# else +# if (2 == 4) + typedef unsigned short __u32; +# else + ? == error + : undefined 32 bit type +# endif /* SIZEOF_SHORT == 4 */ +# endif /* SIZEOF_LONG == 4 */ +# endif /* SIZEOF_INT == 4 */ +# endif /* __U32_TYPEDEF */ -#ifdef __S32_TYPEDEF +# ifdef __S32_TYPEDEF typedef __S32_TYPEDEF __s32; -#else -#if (4 == 4) -typedef int __s32; -#else -#if (4 == 4) -typedef long __s32; -#else -#if (2 == 4) -typedef short __s32; -#else - ?== error: undefined 32 bit type -#endif /* SIZEOF_SHORT == 4 */ -#endif /* SIZEOF_LONG == 4 */ -#endif /* SIZEOF_INT == 4 */ -#endif /* __S32_TYPEDEF */ +# else +# if (4 == 4) +typedef int __s32; +# else +# if (4 == 4) +typedef long __s32; +# else +# if (2 == 4) +typedef short __s32; +# else + ? == error + : undefined 32 bit type +# endif /* SIZEOF_SHORT == 4 */ +# endif /* SIZEOF_LONG == 4 */ +# endif /* SIZEOF_INT == 4 */ +# endif /* __S32_TYPEDEF */ -#ifdef __U64_TYPEDEF +# ifdef __U64_TYPEDEF typedef __U64_TYPEDEF __u64; -#else -#if (4 == 8) -typedef unsigned int __u64; -#else -#if (4 == 8) -typedef unsigned long __u64; -#else -#if (8 == 8) -typedef unsigned long long __u64; -#endif /* SIZEOF_LONG_LONG == 8 */ -#endif /* SIZEOF_LONG == 8 */ -#endif /* SIZEOF_INT == 8 */ -#endif /* __U64_TYPEDEF */ +# else +# if (4 == 8) +typedef unsigned int __u64; +# else +# if (4 == 8) +typedef unsigned long __u64; +# else +# if (8 == 8) +typedef unsigned long long __u64; +# endif /* SIZEOF_LONG_LONG == 8 */ +# endif /* SIZEOF_LONG == 8 */ +# endif /* SIZEOF_INT == 8 */ +# endif /* __U64_TYPEDEF */ -#ifdef __S64_TYPEDEF +# ifdef __S64_TYPEDEF typedef __S64_TYPEDEF __s64; -#else -#if (4 == 8) -typedef int __s64; -#else -#if (4 == 8) -typedef long __s64; -#else -#if (8 == 8) -#if defined(__GNUC__) -typedef __signed__ long long __s64; -#else -typedef signed long long __s64; -#endif /* __GNUC__ */ -#endif /* SIZEOF_LONG_LONG == 8 */ -#endif /* SIZEOF_LONG == 8 */ -#endif /* SIZEOF_INT == 8 */ -#endif /* __S64_TYPEDEF */ +# else +# if (4 == 8) +typedef int __s64; +# else +# if (4 == 8) +typedef long __s64; +# else +# if (8 == 8) +# if defined(__GNUC__) +typedef __signed__ long long __s64; +# else +typedef signed long long __s64; +# endif /* __GNUC__ */ +# endif /* SIZEOF_LONG_LONG == 8 */ +# endif /* SIZEOF_LONG == 8 */ +# endif /* SIZEOF_INT == 8 */ +# endif /* __S64_TYPEDEF */ -#undef __S8_TYPEDEF -#undef __U8_TYPEDEF -#undef __S16_TYPEDEF -#undef __U16_TYPEDEF -#undef __S32_TYPEDEF -#undef __U32_TYPEDEF -#undef __S64_TYPEDEF -#undef __U64_TYPEDEF +# undef __S8_TYPEDEF +# undef __U8_TYPEDEF +# undef __S16_TYPEDEF +# undef __U16_TYPEDEF +# undef __S32_TYPEDEF +# undef __U32_TYPEDEF +# undef __S64_TYPEDEF +# undef __U64_TYPEDEF #endif /* _*_TYPES_H */ diff --git a/Kernel/IO.h b/Kernel/IO.h index 5453b98494..259911264c 100644 --- a/Kernel/IO.h +++ b/Kernel/IO.h @@ -7,47 +7,58 @@ namespace IO { inline byte in8(word port) { byte value; - asm volatile("inb %1, %0":"=a"(value):"Nd"(port)); + asm volatile("inb %1, %0" + : "=a"(value) + : "Nd"(port)); return value; } inline word in16(word port) { word value; - asm volatile("inw %1, %0":"=a"(value):"Nd"(port)); + asm volatile("inw %1, %0" + : "=a"(value) + : "Nd"(port)); return value; } inline dword in32(word port) { dword value; - asm volatile("inl %1, %0":"=a"(value):"Nd"(port)); + asm volatile("inl %1, %0" + : "=a"(value) + : "Nd"(port)); return value; } inline void repeated_in16(word port, byte* buffer, int buffer_size) { - asm volatile("rep insw" : "+D"(buffer), "+c"(buffer_size) : "d"(port) : "memory"); + asm volatile("rep insw" + : "+D"(buffer), "+c"(buffer_size) + : "d"(port) + : "memory"); } inline void out8(word port, byte value) { - asm volatile("outb %0, %1"::"a"(value), "Nd"(port)); + asm volatile("outb %0, %1" ::"a"(value), "Nd"(port)); } inline void out16(word port, word value) { - asm volatile("outw %0, %1"::"a"(value), "Nd"(port)); + asm volatile("outw %0, %1" ::"a"(value), "Nd"(port)); } inline void out32(word port, dword value) { - asm volatile("outl %0, %1"::"a"(value), "Nd"(port)); + asm volatile("outl %0, %1" ::"a"(value), "Nd"(port)); } inline void repeated_out16(word port, const byte* data, int data_size) { - asm volatile("rep outsw" : "+S"(data), "+c"(data_size) : "d"(port)); + asm volatile("rep outsw" + : "+S"(data), "+c"(data_size) + : "d"(port)); } } diff --git a/Kernel/IRQHandler.h b/Kernel/IRQHandler.h index e856b84e46..4abadf6b20 100644 --- a/Kernel/IRQHandler.h +++ b/Kernel/IRQHandler.h @@ -18,4 +18,3 @@ protected: private: byte m_irq_number { 0 }; }; - diff --git a/Kernel/KResult.h b/Kernel/KResult.h index 1cc740bc74..291e9ea2ea 100644 --- a/Kernel/KResult.h +++ b/Kernel/KResult.h @@ -3,20 +3,31 @@ #include <AK/Assertions.h> #include <LibC/errno_numbers.h> -enum KSuccessTag { KSuccess }; +enum KSuccessTag +{ + KSuccess +}; class KResult { public: - explicit KResult(int negative_e) : m_error(negative_e) { ASSERT(negative_e <= 0); } - KResult(KSuccessTag) : m_error(0) { } + explicit KResult(int negative_e) + : m_error(negative_e) + { + ASSERT(negative_e <= 0); + } + KResult(KSuccessTag) + : m_error(0) + { + } operator int() const { return m_error; } bool is_success() const { return m_error == ESUCCESS; } bool is_error() const { return !is_success(); } private: - template<typename T> friend class KResultOr; - KResult() { } + template<typename T> + friend class KResultOr; + KResult() {} int m_error { 0 }; }; @@ -27,7 +38,8 @@ public: KResultOr(KResult error) : m_error(error) , m_is_error(true) - { } + { + } KResultOr(T&& value) { @@ -54,9 +66,21 @@ public: } bool is_error() const { return m_is_error; } - KResult error() const { ASSERT(m_is_error); return m_error; } - T& value() { ASSERT(!m_is_error); return *reinterpret_cast<T*>(&m_storage); } - const T& value() const { ASSERT(!m_is_error); return *reinterpret_cast<T*>(&m_storage); } + KResult error() const + { + ASSERT(m_is_error); + return m_error; + } + T& value() + { + ASSERT(!m_is_error); + return *reinterpret_cast<T*>(&m_storage); + } + const T& value() const + { + ASSERT(!m_is_error); + return *reinterpret_cast<T*>(&m_storage); + } T release_value() { @@ -71,4 +95,3 @@ private: KResult m_error; bool m_is_error { false }; }; - diff --git a/Kernel/KeyCode.h b/Kernel/KeyCode.h index 310c950ca9..67c065625f 100644 --- a/Kernel/KeyCode.h +++ b/Kernel/KeyCode.h @@ -2,7 +2,8 @@ #include <AK/Types.h> -enum KeyCode : byte { +enum KeyCode : byte +{ Key_Invalid = 0, Key_Escape, Key_Tab, @@ -113,7 +114,8 @@ enum KeyCode : byte { Key_Shift = Key_LeftShift, }; -enum KeyModifier { +enum KeyModifier +{ Mod_None = 0x00, Mod_Alt = 0x01, Mod_Ctrl = 0x02, diff --git a/Kernel/LinearAddress.h b/Kernel/LinearAddress.h index c3064a9af4..3b0eecea02 100644 --- a/Kernel/LinearAddress.h +++ b/Kernel/LinearAddress.h @@ -4,8 +4,11 @@ class LinearAddress { public: - LinearAddress() { } - explicit LinearAddress(dword address) : m_address(address) { } + LinearAddress() {} + explicit LinearAddress(dword address) + : m_address(address) + { + } bool is_null() const { return m_address == 0; } diff --git a/Kernel/Lock.h b/Kernel/Lock.h index c61df5f647..fcd9a69a94 100644 --- a/Kernel/Lock.h +++ b/Kernel/Lock.h @@ -2,9 +2,9 @@ #include <AK/Assertions.h> #include <AK/Types.h> -#include <Kernel/i386.h> -#include <Kernel/Scheduler.h> #include <Kernel/KSyms.h> +#include <Kernel/Scheduler.h> +#include <Kernel/i386.h> class Thread; extern Thread* current; @@ -14,16 +14,19 @@ static inline dword CAS(volatile dword* mem, dword newval, dword oldval) dword ret; asm volatile( "cmpxchgl %2, %1" - :"=a"(ret), "+m"(*mem) - :"r"(newval), "0"(oldval) - :"cc", "memory"); + : "=a"(ret), "+m"(*mem) + : "r"(newval), "0"(oldval) + : "cc", "memory"); return ret; } class Lock { public: - Lock(const char* name = nullptr) : m_name(name) { } - ~Lock() { } + Lock(const char* name = nullptr) + : m_name(name) + { + } + ~Lock() {} void lock(); void unlock(); @@ -40,7 +43,11 @@ private: class Locker { public: - [[gnu::always_inline]] inline explicit Locker(Lock& l) : m_lock(l) { lock(); } + [[gnu::always_inline]] inline explicit Locker(Lock& l) + : m_lock(l) + { + lock(); + } [[gnu::always_inline]] inline ~Locker() { unlock(); } [[gnu::always_inline]] inline void unlock() { m_lock.unlock(); } [[gnu::always_inline]] inline void lock() { m_lock.lock(); } @@ -123,8 +130,11 @@ inline bool Lock::unlock_if_locked() template<typename T> class Lockable { public: - Lockable() { } - Lockable(T&& resource) : m_resource(move(resource)) { } + Lockable() {} + Lockable(T&& resource) + : m_resource(move(resource)) + { + } Lock& lock() { return m_lock; } T& resource() { return m_resource; } @@ -138,4 +148,3 @@ private: T m_resource; Lock m_lock; }; - diff --git a/Kernel/Net/ARP.h b/Kernel/Net/ARP.h index ddfcd54f63..2fecc2b0a0 100644 --- a/Kernel/Net/ARP.h +++ b/Kernel/Net/ARP.h @@ -1,23 +1,26 @@ #pragma once -#include <Kernel/Net/MACAddress.h> -#include <Kernel/Net/IPv4.h> #include <Kernel/Net/EtherType.h> +#include <Kernel/Net/IPv4.h> +#include <Kernel/Net/MACAddress.h> struct ARPOperation { -enum : word { - Request = 1, - Response = 2, -}; + enum : word + { + Request = 1, + Response = 2, + }; }; struct ARPHardwareType { -enum : word { - Ethernet = 1, -}; + enum : word + { + Ethernet = 1, + }; }; -class [[gnu::packed]] ARPPacket { +class [[gnu::packed]] ARPPacket +{ public: word hardware_type() const { return ntohs(m_hardware_type); } void set_hardware_type(word w) { m_hardware_type = htons(w); } diff --git a/Kernel/Net/E1000NetworkAdapter.h b/Kernel/Net/E1000NetworkAdapter.h index cf9bdb3ba5..e2050853d5 100644 --- a/Kernel/Net/E1000NetworkAdapter.h +++ b/Kernel/Net/E1000NetworkAdapter.h @@ -1,12 +1,13 @@ #pragma once +#include <AK/OwnPtr.h> +#include <Kernel/IRQHandler.h> #include <Kernel/Net/NetworkAdapter.h> #include <Kernel/PCI.h> #include <Kernel/VM/MemoryManager.h> -#include <Kernel/IRQHandler.h> -#include <AK/OwnPtr.h> -class E1000NetworkAdapter final : public NetworkAdapter, public IRQHandler { +class E1000NetworkAdapter final : public NetworkAdapter + , public IRQHandler { public: static E1000NetworkAdapter* the(); @@ -21,7 +22,8 @@ private: virtual void handle_irq() override; virtual const char* class_name() const override { return "E1000NetworkAdapter"; } - struct [[gnu::packed]] e1000_rx_desc { + struct [[gnu::packed]] e1000_rx_desc + { volatile uint64_t addr { 0 }; volatile uint16_t length { 0 }; volatile uint16_t checksum { 0 }; @@ -30,7 +32,8 @@ private: volatile uint16_t special { 0 }; }; - struct [[gnu::packed]] e1000_tx_desc { + struct [[gnu::packed]] e1000_tx_desc + { volatile uint64_t addr { 0 }; volatile uint16_t length { 0 }; volatile uint8_t cso { 0 }; diff --git a/Kernel/Net/EtherType.h b/Kernel/Net/EtherType.h index 027967ff77..42edc16427 100644 --- a/Kernel/Net/EtherType.h +++ b/Kernel/Net/EtherType.h @@ -3,8 +3,9 @@ #include <AK/Types.h> struct EtherType { -enum : word { - ARP = 0x0806, - IPv4 = 0x0800, -}; + enum : word + { + ARP = 0x0806, + IPv4 = 0x0800, + }; }; diff --git a/Kernel/Net/EthernetFrameHeader.h b/Kernel/Net/EthernetFrameHeader.h index 18afc9242b..137285230e 100644 --- a/Kernel/Net/EthernetFrameHeader.h +++ b/Kernel/Net/EthernetFrameHeader.h @@ -1,12 +1,13 @@ #pragma once -#include <Kernel/Net/MACAddress.h> #include <AK/NetworkOrdered.h> +#include <Kernel/Net/MACAddress.h> -class [[gnu::packed]] EthernetFrameHeader { +class [[gnu::packed]] EthernetFrameHeader +{ public: - EthernetFrameHeader() { } - ~EthernetFrameHeader() { } + EthernetFrameHeader() {} + ~EthernetFrameHeader() {} MACAddress destination() const { return m_destination; } void set_destination(const MACAddress& address) { m_destination = address; } @@ -28,4 +29,3 @@ private: }; static_assert(sizeof(EthernetFrameHeader) == 14); - diff --git a/Kernel/Net/ICMP.h b/Kernel/Net/ICMP.h index efc6cf4ca6..2433626a64 100644 --- a/Kernel/Net/ICMP.h +++ b/Kernel/Net/ICMP.h @@ -1,19 +1,21 @@ #pragma once -#include <Kernel/Net/MACAddress.h> #include <Kernel/Net/IPv4.h> +#include <Kernel/Net/MACAddress.h> struct ICMPType { -enum { - EchoReply = 0, - EchoRequest = 8, -}; + enum + { + EchoReply = 0, + EchoRequest = 8, + }; }; -class [[gnu::packed]] ICMPHeader { +class [[gnu::packed]] ICMPHeader +{ public: - ICMPHeader() { } - ~ICMPHeader() { } + ICMPHeader() {} + ~ICMPHeader() {} byte type() const { return m_type; } void set_type(byte b) { m_type = b; } @@ -36,7 +38,8 @@ private: static_assert(sizeof(ICMPHeader) == 4); -struct [[gnu::packed]] ICMPEchoPacket { +struct [[gnu::packed]] ICMPEchoPacket +{ ICMPHeader header; NetworkOrdered<word> identifier; NetworkOrdered<word> sequence_number; diff --git a/Kernel/Net/IPv4.h b/Kernel/Net/IPv4.h index 61232b78e2..0c858d94d0 100644 --- a/Kernel/Net/IPv4.h +++ b/Kernel/Net/IPv4.h @@ -5,7 +5,8 @@ #include <AK/NetworkOrdered.h> #include <AK/Types.h> -enum class IPv4Protocol : word { +enum class IPv4Protocol : word +{ ICMP = 1, TCP = 6, UDP = 17, @@ -13,9 +14,10 @@ enum class IPv4Protocol : word { NetworkOrdered<word> internet_checksum(const void*, size_t); -class [[gnu::packed]] IPv4Address { +class [[gnu::packed]] IPv4Address +{ public: - IPv4Address() { } + IPv4Address() {} IPv4Address(const byte data[4]) { m_data[0] = data[0]; @@ -64,7 +66,8 @@ struct Traits<IPv4Address> { } -class [[gnu::packed]] IPv4Packet { +class [[gnu::packed]] IPv4Packet +{ public: byte version() const { return (m_version_and_ihl >> 4) & 0xf; } void set_version(byte version) { m_version_and_ihl = (m_version_and_ihl & 0x0f) | (version << 4); } diff --git a/Kernel/Net/IPv4Socket.h b/Kernel/Net/IPv4Socket.h index 33b4f9d420..4f18d63113 100644 --- a/Kernel/Net/IPv4Socket.h +++ b/Kernel/Net/IPv4Socket.h @@ -1,11 +1,11 @@ #pragma once -#include <Kernel/Net/Socket.h> -#include <Kernel/DoubleBuffer.h> -#include <Kernel/Net/IPv4.h> #include <AK/HashMap.h> -#include <Kernel/Lock.h> #include <AK/SinglyLinkedList.h> +#include <Kernel/DoubleBuffer.h> +#include <Kernel/Lock.h> +#include <Kernel/Net/IPv4.h> +#include <Kernel/Net/Socket.h> class IPv4SocketHandle; class TCPSocketHandle; @@ -86,7 +86,7 @@ private: class IPv4SocketHandle : public SocketHandle { public: - IPv4SocketHandle() { } + IPv4SocketHandle() {} IPv4SocketHandle(RetainPtr<IPv4Socket>&& socket) : SocketHandle(move(socket)) diff --git a/Kernel/Net/LocalSocket.h b/Kernel/Net/LocalSocket.h index db481912f2..3328fd4eba 100644 --- a/Kernel/Net/LocalSocket.h +++ b/Kernel/Net/LocalSocket.h @@ -1,7 +1,7 @@ #pragma once -#include <Kernel/Net/Socket.h> #include <Kernel/DoubleBuffer.h> +#include <Kernel/Net/Socket.h> class FileDescriptor; @@ -39,4 +39,3 @@ private: DoubleBuffer m_for_client; DoubleBuffer m_for_server; }; - diff --git a/Kernel/Net/MACAddress.h b/Kernel/Net/MACAddress.h index 0c2de93b27..3cf906decb 100644 --- a/Kernel/Net/MACAddress.h +++ b/Kernel/Net/MACAddress.h @@ -1,18 +1,19 @@ #pragma once -#include <AK/Assertions.h> #include <AK/AKString.h> +#include <AK/Assertions.h> #include <AK/Types.h> #include <Kernel/StdLib.h> -class [[gnu::packed]] MACAddress { +class [[gnu::packed]] MACAddress +{ public: - MACAddress() { } + MACAddress() {} MACAddress(const byte data[6]) { memcpy(m_data, data, 6); } - ~MACAddress() { } + ~MACAddress() {} byte operator[](int i) const { diff --git a/Kernel/Net/NetworkAdapter.h b/Kernel/Net/NetworkAdapter.h index 3a7d0755c7..fd24d7ca41 100644 --- a/Kernel/Net/NetworkAdapter.h +++ b/Kernel/Net/NetworkAdapter.h @@ -3,19 +3,23 @@ #include <AK/ByteBuffer.h> #include <AK/SinglyLinkedList.h> #include <AK/Types.h> -#include <Kernel/Net/MACAddress.h> -#include <Kernel/Net/IPv4.h> +#include <Kernel/Alarm.h> #include <Kernel/Net/ARP.h> #include <Kernel/Net/ICMP.h> -#include <Kernel/Alarm.h> +#include <Kernel/Net/IPv4.h> +#include <Kernel/Net/MACAddress.h> class NetworkAdapter; class PacketQueueAlarm final : public Alarm { public: - PacketQueueAlarm(NetworkAdapter& adapter) : m_adapter(adapter) { } - virtual ~PacketQueueAlarm() override { } + PacketQueueAlarm(NetworkAdapter& adapter) + : m_adapter(adapter) + { + } + virtual ~PacketQueueAlarm() override {} virtual bool is_ringing() const override; + private: NetworkAdapter& m_adapter; }; diff --git a/Kernel/Net/Socket.h b/Kernel/Net/Socket.h index 0fb9544cbb..45693a2ffc 100644 --- a/Kernel/Net/Socket.h +++ b/Kernel/Net/Socket.h @@ -1,16 +1,27 @@ #pragma once -#include <Kernel/Lock.h> -#include <AK/Retainable.h> -#include <AK/RetainPtr.h> #include <AK/HashTable.h> +#include <AK/RetainPtr.h> +#include <AK/Retainable.h> #include <AK/Vector.h> #include <Kernel/File.h> -#include <Kernel/UnixTypes.h> #include <Kernel/KResult.h> +#include <Kernel/Lock.h> +#include <Kernel/UnixTypes.h> -enum class SocketRole : byte { None, Listener, Accepted, Connected, Connecting }; -enum class ShouldBlock { No = 0, Yes = 1 }; +enum class SocketRole : byte +{ + None, + Listener, + Accepted, + Connected, + Connecting +}; +enum class ShouldBlock +{ + No = 0, + Yes = 1 +}; class FileDescriptor; @@ -85,7 +96,7 @@ private: class SocketHandle { public: - SocketHandle() { } + SocketHandle() {} SocketHandle(RetainPtr<Socket>&& socket) : m_socket(move(socket)) diff --git a/Kernel/Net/TCP.h b/Kernel/Net/TCP.h index e2eac61449..8138ed3d52 100644 --- a/Kernel/Net/TCP.h +++ b/Kernel/Net/TCP.h @@ -3,20 +3,22 @@ #include <Kernel/Net/IPv4.h> struct TCPFlags { -enum : word { - FIN = 0x01, - SYN = 0x02, - RST = 0x04, - PUSH = 0x08, - ACK = 0x10, - URG = 0x20 -}; + enum : word + { + FIN = 0x01, + SYN = 0x02, + RST = 0x04, + PUSH = 0x08, + ACK = 0x10, + URG = 0x20 + }; }; -class [[gnu::packed]] TCPPacket { +class [[gnu::packed]] TCPPacket +{ public: - TCPPacket() { } - ~TCPPacket() { } + TCPPacket() {} + ~TCPPacket() {} size_t header_size() const { return data_offset() * sizeof(dword); } diff --git a/Kernel/Net/TCPSocket.h b/Kernel/Net/TCPSocket.h index c248b9d9ba..35856d7ae8 100644 --- a/Kernel/Net/TCPSocket.h +++ b/Kernel/Net/TCPSocket.h @@ -7,7 +7,8 @@ public: static Retained<TCPSocket> create(int protocol); virtual ~TCPSocket() override; - enum class State { + enum class State + { Disconnected, Connecting, Connected, @@ -47,7 +48,7 @@ private: class TCPSocketHandle : public SocketHandle { public: - TCPSocketHandle() { } + TCPSocketHandle() {} TCPSocketHandle(RetainPtr<TCPSocket>&& socket) : SocketHandle(move(socket)) diff --git a/Kernel/Net/UDP.h b/Kernel/Net/UDP.h index ba6d02af37..7ec39719cd 100644 --- a/Kernel/Net/UDP.h +++ b/Kernel/Net/UDP.h @@ -2,10 +2,11 @@ #include <Kernel/Net/IPv4.h> -class [[gnu::packed]] UDPPacket { +class [[gnu::packed]] UDPPacket +{ public: - UDPPacket() { } - ~UDPPacket() { } + UDPPacket() {} + ~UDPPacket() {} word source_port() const { return m_source_port; } void set_source_port(word port) { m_source_port = port; } diff --git a/Kernel/Net/UDPSocket.h b/Kernel/Net/UDPSocket.h index ea94887754..a76eaa7fe7 100644 --- a/Kernel/Net/UDPSocket.h +++ b/Kernel/Net/UDPSocket.h @@ -25,7 +25,7 @@ private: class UDPSocketHandle : public SocketHandle { public: - UDPSocketHandle() { } + UDPSocketHandle() {} UDPSocketHandle(RetainPtr<UDPSocket>&& socket) : SocketHandle(move(socket)) @@ -46,4 +46,3 @@ public: UDPSocket& socket() { return static_cast<UDPSocket&>(SocketHandle::socket()); } const UDPSocket& socket() const { return static_cast<const UDPSocket&>(SocketHandle::socket()); } }; - diff --git a/Kernel/PCI.h b/Kernel/PCI.h index e8330d4245..f295fb8f4d 100644 --- a/Kernel/PCI.h +++ b/Kernel/PCI.h @@ -18,8 +18,13 @@ struct ID { }; struct Address { - Address() { } - Address(byte bus, byte slot, byte function) : m_bus(bus), m_slot(slot), m_function(function) { } + Address() {} + Address(byte bus, byte slot, byte function) + : m_bus(bus) + , m_slot(slot) + , m_function(function) + { + } bool is_null() const { return !m_bus && !m_slot && !m_function; } operator bool() const { return !is_null(); } diff --git a/Kernel/PIC.h b/Kernel/PIC.h index 2f6304139c..7b0dcbe6a5 100644 --- a/Kernel/PIC.h +++ b/Kernel/PIC.h @@ -15,7 +15,10 @@ word get_irr(); class IRQHandlerScope { public: - explicit IRQHandlerScope(byte irq) : m_irq(irq) { } + explicit IRQHandlerScope(byte irq) + : m_irq(irq) + { + } ~IRQHandlerScope() { PIC::eoi(m_irq); } private: diff --git a/Kernel/PhysicalAddress.h b/Kernel/PhysicalAddress.h index 1f8ff12b4f..6fd869dca6 100644 --- a/Kernel/PhysicalAddress.h +++ b/Kernel/PhysicalAddress.h @@ -2,8 +2,11 @@ class PhysicalAddress { public: - PhysicalAddress() { } - explicit PhysicalAddress(dword address) : m_address(address) { } + PhysicalAddress() {} + explicit PhysicalAddress(dword address) + : m_address(address) + { + } PhysicalAddress offset(dword o) const { return PhysicalAddress(m_address + o); } dword get() const { return m_address; } @@ -22,4 +25,3 @@ public: private: dword m_address { 0 }; }; - diff --git a/Kernel/Process.h b/Kernel/Process.h index 328cb3a788..242219d889 100644 --- a/Kernel/Process.h +++ b/Kernel/Process.h @@ -1,18 +1,18 @@ #pragma once -#include <AK/Types.h> -#include <AK/InlineLinkedList.h> #include <AK/AKString.h> +#include <AK/InlineLinkedList.h> +#include <AK/Types.h> #include <AK/Vector.h> #include <AK/WeakPtr.h> #include <AK/Weakable.h> #include <Kernel/FileSystem/VirtualFileSystem.h> -#include <Kernel/VM/RangeAllocator.h> -#include <Kernel/TTY/TTY.h> +#include <Kernel/Lock.h> #include <Kernel/Syscall.h> -#include <Kernel/UnixTypes.h> +#include <Kernel/TTY/TTY.h> #include <Kernel/Thread.h> -#include <Kernel/Lock.h> +#include <Kernel/UnixTypes.h> +#include <Kernel/VM/RangeAllocator.h> #include <LibC/signal_numbers.h> class ELFLoader; @@ -24,9 +24,11 @@ class ProcessTracer; void kgettimeofday(timeval&); -class Process : public InlineLinkedListNode<Process>, public Weakable<Process> { +class Process : public InlineLinkedListNode<Process> + , public Weakable<Process> { friend class InlineLinkedListNode<Process>; friend class Thread; + public: static Process* create_kernel_process(String&& name, void (*entry)()); static Process* create_user_process(const String& path, uid_t, gid_t, pid_t ppid, int& error, Vector<String>&& arguments = Vector<String>(), Vector<String>&& environment = Vector<String>(), TTY* = nullptr); @@ -35,14 +37,16 @@ public: static Vector<pid_t> all_pids(); static Vector<Process*> all_processes(); - enum Priority { + enum Priority + { IdlePriority, LowPriority, NormalPriority, HighPriority, }; - enum RingLevel { + enum RingLevel + { Ring0 = 0, Ring3 = 3, }; @@ -83,10 +87,14 @@ public: FileDescriptor* file_descriptor(int fd); const FileDescriptor* file_descriptor(int fd) const; - template<typename Callback> static void for_each(Callback); - template<typename Callback> static void for_each_in_pgrp(pid_t, Callback); - template<typename Callback> void for_each_child(Callback); - template<typename Callback> void for_each_thread(Callback) const; + template<typename Callback> + static void for_each(Callback); + template<typename Callback> + static void for_each_in_pgrp(pid_t, Callback); + template<typename Callback> + void for_each_child(Callback); + template<typename Callback> + void for_each_thread(Callback) const; void die(); void finalize(); @@ -179,7 +187,7 @@ public: int sys$getsockname(int sockfd, sockaddr* addr, socklen_t* addrlen); int sys$getpeername(int sockfd, sockaddr* addr, socklen_t* addrlen); int sys$restore_signal_mask(dword mask); - int sys$create_thread(int(*)(void*), void*); + int sys$create_thread(int (*)(void*), void*); void sys$exit_thread(int code); int sys$rename(const char* oldpath, const char* newpath); int sys$systrace(pid_t); @@ -216,8 +224,10 @@ public: bool validate_read(const void*, ssize_t) const; bool validate_write(void*, ssize_t) const; bool validate_read_str(const char* str); - template<typename T> bool validate_read_typed(T* value, size_t count = 1) { return validate_read(value, sizeof(T) * count); } - template<typename T> bool validate_write_typed(T* value, size_t count = 1) { return validate_write(value, sizeof(T) * count); } + template<typename T> + bool validate_read_typed(T* value, size_t count = 1) { return validate_read(value, sizeof(T) * count); } + template<typename T> + bool validate_write_typed(T* value, size_t count = 1) { return validate_write(value, sizeof(T) * count); } Inode& cwd_inode(); Inode* executable_inode() { return m_executable.ptr(); } @@ -365,6 +375,7 @@ public: Process* operator->() { return &m_process; } Process& operator*() { return m_process; } + private: Process& m_process; }; diff --git a/Kernel/ProcessTracer.h b/Kernel/ProcessTracer.h index 9db8aa60a4..b0b0321b67 100644 --- a/Kernel/ProcessTracer.h +++ b/Kernel/ProcessTracer.h @@ -1,7 +1,7 @@ #pragma once -#include <Kernel/File.h> #include <AK/CircularQueue.h> +#include <Kernel/File.h> #include <Kernel/UnixTypes.h> class ProcessTracer : public File { diff --git a/Kernel/RTC.h b/Kernel/RTC.h index 7fe25b3392..3ae5a441a5 100644 --- a/Kernel/RTC.h +++ b/Kernel/RTC.h @@ -10,4 +10,3 @@ time_t boot_time(); void read_registers(unsigned& year, unsigned& month, unsigned& day, unsigned& hour, unsigned& minute, unsigned& second); } - diff --git a/Kernel/Scheduler.h b/Kernel/Scheduler.h index da3c5c8e3e..76b4a8d070 100644 --- a/Kernel/Scheduler.h +++ b/Kernel/Scheduler.h @@ -26,6 +26,7 @@ public: static Process* colonel(); static bool is_active(); static void beep(); + private: static void prepare_for_iret_to_new_process(); }; diff --git a/Kernel/SharedMemory.h b/Kernel/SharedMemory.h index ffbb7ac468..4c8520ce12 100644 --- a/Kernel/SharedMemory.h +++ b/Kernel/SharedMemory.h @@ -1,11 +1,11 @@ #pragma once -#include <AK/Retainable.h> -#include <AK/RetainPtr.h> #include <AK/AKString.h> +#include <AK/RetainPtr.h> +#include <AK/Retainable.h> +#include <Kernel/File.h> #include <Kernel/KResult.h> #include <Kernel/UnixTypes.h> -#include <Kernel/File.h> class VMObject; diff --git a/Kernel/StdLib.h b/Kernel/StdLib.h index 3f32de4797..6fa43e3563 100644 --- a/Kernel/StdLib.h +++ b/Kernel/StdLib.h @@ -12,12 +12,11 @@ char* strncpy(char*, const char*, size_t); int strcmp(char const*, const char*); size_t strlen(const char*); void* memset(void*, int, size_t); -char *strdup(const char*); +char* strdup(const char*); int memcmp(const void*, const void*, size_t); char* strrchr(const char* str, int ch); void* memmove(void* dest, const void* src, size_t n); inline word ntohs(word w) { return (w & 0xff) << 8 | ((w >> 8) & 0xff); } inline word htons(word w) { return (w & 0xff) << 8 | ((w >> 8) & 0xff); } - } diff --git a/Kernel/Syscall.h b/Kernel/Syscall.h index 2d093f6a74..c6ff1bc686 100644 --- a/Kernel/Syscall.h +++ b/Kernel/Syscall.h @@ -3,116 +3,116 @@ #include <AK/Types.h> #include <LibC/fd_set.h> -#define ENUMERATE_SYSCALLS \ - __ENUMERATE_SYSCALL(sleep) \ - __ENUMERATE_SYSCALL(yield) \ - __ENUMERATE_SYSCALL(putch) \ - __ENUMERATE_SYSCALL(open) \ - __ENUMERATE_SYSCALL(close) \ - __ENUMERATE_SYSCALL(read) \ - __ENUMERATE_SYSCALL(lseek) \ - __ENUMERATE_SYSCALL(kill) \ - __ENUMERATE_SYSCALL(getuid) \ - __ENUMERATE_SYSCALL(exit) \ - __ENUMERATE_SYSCALL(getgid) \ - __ENUMERATE_SYSCALL(getpid) \ - __ENUMERATE_SYSCALL(waitpid) \ - __ENUMERATE_SYSCALL(mmap) \ - __ENUMERATE_SYSCALL(munmap) \ - __ENUMERATE_SYSCALL(get_dir_entries) \ - __ENUMERATE_SYSCALL(lstat) \ - __ENUMERATE_SYSCALL(getcwd) \ - __ENUMERATE_SYSCALL(gettimeofday) \ - __ENUMERATE_SYSCALL(gethostname) \ - __ENUMERATE_SYSCALL(chdir) \ - __ENUMERATE_SYSCALL(uname) \ - __ENUMERATE_SYSCALL(set_mmap_name) \ - __ENUMERATE_SYSCALL(readlink) \ - __ENUMERATE_SYSCALL(write) \ - __ENUMERATE_SYSCALL(ttyname_r) \ - __ENUMERATE_SYSCALL(stat) \ - __ENUMERATE_SYSCALL(getsid) \ - __ENUMERATE_SYSCALL(setsid) \ - __ENUMERATE_SYSCALL(getpgid) \ - __ENUMERATE_SYSCALL(setpgid) \ - __ENUMERATE_SYSCALL(getpgrp) \ - __ENUMERATE_SYSCALL(fork) \ - __ENUMERATE_SYSCALL(execve) \ - __ENUMERATE_SYSCALL(geteuid) \ - __ENUMERATE_SYSCALL(getegid) \ - __ENUMERATE_SYSCALL(isatty) \ - __ENUMERATE_SYSCALL(getdtablesize) \ - __ENUMERATE_SYSCALL(dup) \ - __ENUMERATE_SYSCALL(dup2) \ - __ENUMERATE_SYSCALL(sigaction) \ - __ENUMERATE_SYSCALL(getppid) \ - __ENUMERATE_SYSCALL(umask) \ - __ENUMERATE_SYSCALL(getgroups) \ - __ENUMERATE_SYSCALL(setgroups) \ - __ENUMERATE_SYSCALL(sigreturn) \ - __ENUMERATE_SYSCALL(sigprocmask) \ - __ENUMERATE_SYSCALL(sigpending) \ - __ENUMERATE_SYSCALL(pipe) \ - __ENUMERATE_SYSCALL(killpg) \ - __ENUMERATE_SYSCALL(setuid) \ - __ENUMERATE_SYSCALL(setgid) \ - __ENUMERATE_SYSCALL(alarm) \ - __ENUMERATE_SYSCALL(fstat) \ - __ENUMERATE_SYSCALL(access) \ - __ENUMERATE_SYSCALL(fcntl) \ - __ENUMERATE_SYSCALL(ioctl) \ - __ENUMERATE_SYSCALL(mkdir) \ - __ENUMERATE_SYSCALL(times) \ - __ENUMERATE_SYSCALL(utime) \ - __ENUMERATE_SYSCALL(sync) \ - __ENUMERATE_SYSCALL(ptsname_r) \ - __ENUMERATE_SYSCALL(select) \ - __ENUMERATE_SYSCALL(unlink) \ - __ENUMERATE_SYSCALL(poll) \ - __ENUMERATE_SYSCALL(read_tsc) \ - __ENUMERATE_SYSCALL(rmdir) \ - __ENUMERATE_SYSCALL(chmod) \ - __ENUMERATE_SYSCALL(usleep) \ - __ENUMERATE_SYSCALL(socket) \ - __ENUMERATE_SYSCALL(bind) \ - __ENUMERATE_SYSCALL(accept) \ - __ENUMERATE_SYSCALL(listen) \ - __ENUMERATE_SYSCALL(connect) \ - __ENUMERATE_SYSCALL(create_shared_buffer) \ - __ENUMERATE_SYSCALL(get_shared_buffer) \ - __ENUMERATE_SYSCALL(release_shared_buffer) \ - __ENUMERATE_SYSCALL(link) \ - __ENUMERATE_SYSCALL(chown) \ - __ENUMERATE_SYSCALL(fchmod) \ - __ENUMERATE_SYSCALL(symlink) \ - __ENUMERATE_SYSCALL(restore_signal_mask) \ +#define ENUMERATE_SYSCALLS \ + __ENUMERATE_SYSCALL(sleep) \ + __ENUMERATE_SYSCALL(yield) \ + __ENUMERATE_SYSCALL(putch) \ + __ENUMERATE_SYSCALL(open) \ + __ENUMERATE_SYSCALL(close) \ + __ENUMERATE_SYSCALL(read) \ + __ENUMERATE_SYSCALL(lseek) \ + __ENUMERATE_SYSCALL(kill) \ + __ENUMERATE_SYSCALL(getuid) \ + __ENUMERATE_SYSCALL(exit) \ + __ENUMERATE_SYSCALL(getgid) \ + __ENUMERATE_SYSCALL(getpid) \ + __ENUMERATE_SYSCALL(waitpid) \ + __ENUMERATE_SYSCALL(mmap) \ + __ENUMERATE_SYSCALL(munmap) \ + __ENUMERATE_SYSCALL(get_dir_entries) \ + __ENUMERATE_SYSCALL(lstat) \ + __ENUMERATE_SYSCALL(getcwd) \ + __ENUMERATE_SYSCALL(gettimeofday) \ + __ENUMERATE_SYSCALL(gethostname) \ + __ENUMERATE_SYSCALL(chdir) \ + __ENUMERATE_SYSCALL(uname) \ + __ENUMERATE_SYSCALL(set_mmap_name) \ + __ENUMERATE_SYSCALL(readlink) \ + __ENUMERATE_SYSCALL(write) \ + __ENUMERATE_SYSCALL(ttyname_r) \ + __ENUMERATE_SYSCALL(stat) \ + __ENUMERATE_SYSCALL(getsid) \ + __ENUMERATE_SYSCALL(setsid) \ + __ENUMERATE_SYSCALL(getpgid) \ + __ENUMERATE_SYSCALL(setpgid) \ + __ENUMERATE_SYSCALL(getpgrp) \ + __ENUMERATE_SYSCALL(fork) \ + __ENUMERATE_SYSCALL(execve) \ + __ENUMERATE_SYSCALL(geteuid) \ + __ENUMERATE_SYSCALL(getegid) \ + __ENUMERATE_SYSCALL(isatty) \ + __ENUMERATE_SYSCALL(getdtablesize) \ + __ENUMERATE_SYSCALL(dup) \ + __ENUMERATE_SYSCALL(dup2) \ + __ENUMERATE_SYSCALL(sigaction) \ + __ENUMERATE_SYSCALL(getppid) \ + __ENUMERATE_SYSCALL(umask) \ + __ENUMERATE_SYSCALL(getgroups) \ + __ENUMERATE_SYSCALL(setgroups) \ + __ENUMERATE_SYSCALL(sigreturn) \ + __ENUMERATE_SYSCALL(sigprocmask) \ + __ENUMERATE_SYSCALL(sigpending) \ + __ENUMERATE_SYSCALL(pipe) \ + __ENUMERATE_SYSCALL(killpg) \ + __ENUMERATE_SYSCALL(setuid) \ + __ENUMERATE_SYSCALL(setgid) \ + __ENUMERATE_SYSCALL(alarm) \ + __ENUMERATE_SYSCALL(fstat) \ + __ENUMERATE_SYSCALL(access) \ + __ENUMERATE_SYSCALL(fcntl) \ + __ENUMERATE_SYSCALL(ioctl) \ + __ENUMERATE_SYSCALL(mkdir) \ + __ENUMERATE_SYSCALL(times) \ + __ENUMERATE_SYSCALL(utime) \ + __ENUMERATE_SYSCALL(sync) \ + __ENUMERATE_SYSCALL(ptsname_r) \ + __ENUMERATE_SYSCALL(select) \ + __ENUMERATE_SYSCALL(unlink) \ + __ENUMERATE_SYSCALL(poll) \ + __ENUMERATE_SYSCALL(read_tsc) \ + __ENUMERATE_SYSCALL(rmdir) \ + __ENUMERATE_SYSCALL(chmod) \ + __ENUMERATE_SYSCALL(usleep) \ + __ENUMERATE_SYSCALL(socket) \ + __ENUMERATE_SYSCALL(bind) \ + __ENUMERATE_SYSCALL(accept) \ + __ENUMERATE_SYSCALL(listen) \ + __ENUMERATE_SYSCALL(connect) \ + __ENUMERATE_SYSCALL(create_shared_buffer) \ + __ENUMERATE_SYSCALL(get_shared_buffer) \ + __ENUMERATE_SYSCALL(release_shared_buffer) \ + __ENUMERATE_SYSCALL(link) \ + __ENUMERATE_SYSCALL(chown) \ + __ENUMERATE_SYSCALL(fchmod) \ + __ENUMERATE_SYSCALL(symlink) \ + __ENUMERATE_SYSCALL(restore_signal_mask) \ __ENUMERATE_SYSCALL(get_shared_buffer_size) \ - __ENUMERATE_SYSCALL(seal_shared_buffer) \ - __ENUMERATE_SYSCALL(sendto) \ - __ENUMERATE_SYSCALL(recvfrom) \ - __ENUMERATE_SYSCALL(getsockopt) \ - __ENUMERATE_SYSCALL(setsockopt) \ - __ENUMERATE_SYSCALL(create_thread) \ - __ENUMERATE_SYSCALL(gettid) \ - __ENUMERATE_SYSCALL(donate) \ - __ENUMERATE_SYSCALL(rename) \ - __ENUMERATE_SYSCALL(shm_open) \ - __ENUMERATE_SYSCALL(shm_close) \ - __ENUMERATE_SYSCALL(ftruncate) \ - __ENUMERATE_SYSCALL(systrace) \ - __ENUMERATE_SYSCALL(exit_thread) \ - __ENUMERATE_SYSCALL(mknod) \ - __ENUMERATE_SYSCALL(writev) \ - __ENUMERATE_SYSCALL(beep) \ - __ENUMERATE_SYSCALL(getsockname) \ - __ENUMERATE_SYSCALL(getpeername) \ - + __ENUMERATE_SYSCALL(seal_shared_buffer) \ + __ENUMERATE_SYSCALL(sendto) \ + __ENUMERATE_SYSCALL(recvfrom) \ + __ENUMERATE_SYSCALL(getsockopt) \ + __ENUMERATE_SYSCALL(setsockopt) \ + __ENUMERATE_SYSCALL(create_thread) \ + __ENUMERATE_SYSCALL(gettid) \ + __ENUMERATE_SYSCALL(donate) \ + __ENUMERATE_SYSCALL(rename) \ + __ENUMERATE_SYSCALL(shm_open) \ + __ENUMERATE_SYSCALL(shm_close) \ + __ENUMERATE_SYSCALL(ftruncate) \ + __ENUMERATE_SYSCALL(systrace) \ + __ENUMERATE_SYSCALL(exit_thread) \ + __ENUMERATE_SYSCALL(mknod) \ + __ENUMERATE_SYSCALL(writev) \ + __ENUMERATE_SYSCALL(beep) \ + __ENUMERATE_SYSCALL(getsockname) \ + __ENUMERATE_SYSCALL(getpeername) namespace Syscall { -enum Function { +enum Function +{ #undef __ENUMERATE_SYSCALL -#define __ENUMERATE_SYSCALL(x) SC_ ##x , +#define __ENUMERATE_SYSCALL(x) SC_##x, ENUMERATE_SYSCALLS #undef __ENUMERATE_SYSCALL }; @@ -121,8 +121,10 @@ inline constexpr const char* to_string(Function function) { switch (function) { #undef __ENUMERATE_SYSCALL -#define __ENUMERATE_SYSCALL(x) case SC_ ##x: return #x; - ENUMERATE_SYSCALLS +#define __ENUMERATE_SYSCALL(x) \ + case SC_##x: \ + return #x; + ENUMERATE_SYSCALLS #undef __ENUMERATE_SYSCALL } return "Unknown"; @@ -152,7 +154,7 @@ struct SC_sendto_params { const void* data; size_t data_length; int flags; - const void* addr; // const sockaddr* + const void* addr; // const sockaddr* size_t addr_length; // socklen_t }; @@ -161,7 +163,7 @@ struct SC_recvfrom_params { void* buffer; size_t buffer_length; int flags; - void* addr; // sockaddr* + void* addr; // sockaddr* void* addr_length; // socklen_t* }; @@ -187,7 +189,10 @@ int sync(); inline dword invoke(Function function) { dword result; - asm volatile("int $0x82":"=a"(result):"a"(function):"memory"); + asm volatile("int $0x82" + : "=a"(result) + : "a"(function) + : "memory"); return result; } @@ -195,7 +200,10 @@ template<typename T1> inline dword invoke(Function function, T1 arg1) { dword result; - asm volatile("int $0x82":"=a"(result):"a"(function),"d"((dword)arg1):"memory"); + asm volatile("int $0x82" + : "=a"(result) + : "a"(function), "d"((dword)arg1) + : "memory"); return result; } @@ -203,7 +211,10 @@ template<typename T1, typename T2> inline dword invoke(Function function, T1 arg1, T2 arg2) { dword result; - asm volatile("int $0x82":"=a"(result):"a"(function),"d"((dword)arg1),"c"((dword)arg2):"memory"); + asm volatile("int $0x82" + : "=a"(result) + : "a"(function), "d"((dword)arg1), "c"((dword)arg2) + : "memory"); return result; } @@ -211,7 +222,10 @@ template<typename T1, typename T2, typename T3> inline dword invoke(Function function, T1 arg1, T2 arg2, T3 arg3) { dword result; - asm volatile("int $0x82":"=a"(result):"a"(function),"d"((dword)arg1),"c"((dword)arg2),"b"((dword)arg3):"memory"); + asm volatile("int $0x82" + : "=a"(result) + : "a"(function), "d"((dword)arg1), "c"((dword)arg2), "b"((dword)arg3) + : "memory"); return result; } #endif @@ -219,7 +233,7 @@ inline dword invoke(Function function, T1 arg1, T2 arg2, T3 arg3) } #undef __ENUMERATE_SYSCALL -#define __ENUMERATE_SYSCALL(x) using Syscall::SC_ ##x; - ENUMERATE_SYSCALLS +#define __ENUMERATE_SYSCALL(x) using Syscall::SC_##x; +ENUMERATE_SYSCALLS #undef __ENUMERATE_SYSCALL #define syscall Syscall::invoke diff --git a/Kernel/TTY/PTYMultiplexer.h b/Kernel/TTY/PTYMultiplexer.h index c5979ba991..1d06d6f4d8 100644 --- a/Kernel/TTY/PTYMultiplexer.h +++ b/Kernel/TTY/PTYMultiplexer.h @@ -1,7 +1,7 @@ #pragma once -#include <Kernel/Devices/CharacterDevice.h> #include <AK/Badge.h> +#include <Kernel/Devices/CharacterDevice.h> #include <Kernel/Lock.h> class MasterPTY; diff --git a/Kernel/TTY/SlavePTY.h b/Kernel/TTY/SlavePTY.h index f764c43649..ffe7ebd8b1 100644 --- a/Kernel/TTY/SlavePTY.h +++ b/Kernel/TTY/SlavePTY.h @@ -35,4 +35,3 @@ private: InodeIdentifier m_devpts_inode_id; String m_tty_name; }; - diff --git a/Kernel/TTY/TTY.h b/Kernel/TTY/TTY.h index 56fbcb3c6f..e6d489579c 100644 --- a/Kernel/TTY/TTY.h +++ b/Kernel/TTY/TTY.h @@ -52,4 +52,3 @@ private: unsigned short m_rows { 0 }; unsigned short m_columns { 0 }; }; - diff --git a/Kernel/TTY/VirtualConsole.h b/Kernel/TTY/VirtualConsole.h index eb0c11b3fe..8e89fac853 100644 --- a/Kernel/TTY/VirtualConsole.h +++ b/Kernel/TTY/VirtualConsole.h @@ -1,13 +1,19 @@ #pragma once -#include <Kernel/TTY/TTY.h> -#include <Kernel/Devices/KeyboardDevice.h> #include "Console.h" +#include <Kernel/Devices/KeyboardDevice.h> +#include <Kernel/TTY/TTY.h> -class VirtualConsole final : public TTY, public KeyboardClient, public ConsoleImplementation { +class VirtualConsole final : public TTY + , public KeyboardClient + , public ConsoleImplementation { AK_MAKE_ETERNAL public: - enum InitialContents { Cleared, AdoptCurrentVGABuffer }; + enum InitialContents + { + Cleared, + AdoptCurrentVGABuffer + }; VirtualConsole(unsigned index, InitialContents = Cleared); virtual ~VirtualConsole() override; @@ -67,7 +73,8 @@ private: void execute_escape_sequence(byte final); - enum EscapeState { + enum EscapeState + { Normal, ExpectBracket, ExpectParameter, diff --git a/Kernel/Thread.h b/Kernel/Thread.h index 11091f6d3b..40f7abba11 100644 --- a/Kernel/Thread.h +++ b/Kernel/Thread.h @@ -1,15 +1,15 @@ #pragma once -#include <Kernel/i386.h> -#include <Kernel/KResult.h> -#include <Kernel/LinearAddress.h> -#include <Kernel/UnixTypes.h> -#include <Kernel/VM/Region.h> #include <AK/AKString.h> #include <AK/InlineLinkedList.h> #include <AK/OwnPtr.h> #include <AK/RetainPtr.h> #include <AK/Vector.h> +#include <Kernel/KResult.h> +#include <Kernel/LinearAddress.h> +#include <Kernel/UnixTypes.h> +#include <Kernel/VM/Region.h> +#include <Kernel/i386.h> class Alarm; class FileDescriptor; @@ -17,7 +17,11 @@ class Process; class Region; class Thread; -enum class ShouldUnblockThread { No = 0, Yes }; +enum class ShouldUnblockThread +{ + No = 0, + Yes +}; struct SignalActionData { LinearAddress handler_or_sigaction; @@ -31,6 +35,7 @@ extern InlineLinkedList<Thread>* g_nonrunnable_threads; class Thread : public InlineLinkedListNode<Thread> { friend class Process; friend class Scheduler; + public: explicit Thread(Process&); ~Thread(); @@ -49,7 +54,8 @@ public: void finalize(); - enum State : byte { + enum State : byte + { Invalid = 0, Runnable, Running, @@ -136,11 +142,16 @@ public: InlineLinkedList<Thread>* thread_list() { return m_thread_list; } void set_thread_list(InlineLinkedList<Thread>*); - template<typename Callback> static void for_each_in_state(State, Callback); - template<typename Callback> static void for_each_living(Callback); - template<typename Callback> static void for_each_runnable(Callback); - template<typename Callback> static void for_each_nonrunnable(Callback); - template<typename Callback> static void for_each(Callback); + template<typename Callback> + static void for_each_in_state(State, Callback); + template<typename Callback> + static void for_each_living(Callback); + template<typename Callback> + static void for_each_runnable(Callback); + template<typename Callback> + static void for_each_nonrunnable(Callback); + template<typename Callback> + static void for_each(Callback); static bool is_runnable_state(Thread::State state) { diff --git a/Kernel/UnixTypes.h b/Kernel/UnixTypes.h index 62ed18d1c6..4e092e8e88 100644 --- a/Kernel/UnixTypes.h +++ b/Kernel/UnixTypes.h @@ -56,160 +56,160 @@ #define VEOL2 16 /* c_iflag bits */ -#define IGNBRK 0000001 -#define BRKINT 0000002 -#define IGNPAR 0000004 -#define PARMRK 0000010 -#define INPCK 0000020 -#define ISTRIP 0000040 -#define INLCR 0000100 -#define IGNCR 0000200 -#define ICRNL 0000400 -#define IUCLC 0001000 -#define IXON 0002000 -#define IXANY 0004000 -#define IXOFF 0010000 -#define IMAXBEL 0020000 -#define IUTF8 0040000 +#define IGNBRK 0000001 +#define BRKINT 0000002 +#define IGNPAR 0000004 +#define PARMRK 0000010 +#define INPCK 0000020 +#define ISTRIP 0000040 +#define INLCR 0000100 +#define IGNCR 0000200 +#define ICRNL 0000400 +#define IUCLC 0001000 +#define IXON 0002000 +#define IXANY 0004000 +#define IXOFF 0010000 +#define IMAXBEL 0020000 +#define IUTF8 0040000 /* c_oflag bits */ -#define OPOST 0000001 -#define OLCUC 0000002 -#define ONLCR 0000004 -#define OCRNL 0000010 -#define ONOCR 0000020 -#define ONLRET 0000040 -#define OFILL 0000100 -#define OFDEL 0000200 +#define OPOST 0000001 +#define OLCUC 0000002 +#define ONLCR 0000004 +#define OCRNL 0000010 +#define ONOCR 0000020 +#define ONLRET 0000040 +#define OFILL 0000100 +#define OFDEL 0000200 #if defined __USE_MISC || defined __USE_XOPEN -# define NLDLY 0000400 -# define NL0 0000000 -# define NL1 0000400 -# define CRDLY 0003000 -# define CR0 0000000 -# define CR1 0001000 -# define CR2 0002000 -# define CR3 0003000 -# define TABDLY 0014000 -# define TAB0 0000000 -# define TAB1 0004000 -# define TAB2 0010000 -# define TAB3 0014000 -# define BSDLY 0020000 -# define BS0 0000000 -# define BS1 0020000 -# define FFDLY 0100000 -# define FF0 0000000 -# define FF1 0100000 +# define NLDLY 0000400 +# define NL0 0000000 +# define NL1 0000400 +# define CRDLY 0003000 +# define CR0 0000000 +# define CR1 0001000 +# define CR2 0002000 +# define CR3 0003000 +# define TABDLY 0014000 +# define TAB0 0000000 +# define TAB1 0004000 +# define TAB2 0010000 +# define TAB3 0014000 +# define BSDLY 0020000 +# define BS0 0000000 +# define BS1 0020000 +# define FFDLY 0100000 +# define FF0 0000000 +# define FF1 0100000 #endif -#define VTDLY 0040000 -#define VT0 0000000 -#define VT1 0040000 +#define VTDLY 0040000 +#define VT0 0000000 +#define VT1 0040000 #ifdef __USE_MISC -# define XTABS 0014000 +# define XTABS 0014000 #endif /* c_cflag bit meaning */ #ifdef __USE_MISC -# define CBAUD 0010017 +# define CBAUD 0010017 #endif -#define B0 0000000 /* hang up */ -#define B50 0000001 -#define B75 0000002 -#define B110 0000003 -#define B134 0000004 -#define B150 0000005 -#define B200 0000006 -#define B300 0000007 -#define B600 0000010 -#define B1200 0000011 -#define B1800 0000012 -#define B2400 0000013 -#define B4800 0000014 -#define B9600 0000015 -#define B19200 0000016 -#define B38400 0000017 +#define B0 0000000 /* hang up */ +#define B50 0000001 +#define B75 0000002 +#define B110 0000003 +#define B134 0000004 +#define B150 0000005 +#define B200 0000006 +#define B300 0000007 +#define B600 0000010 +#define B1200 0000011 +#define B1800 0000012 +#define B2400 0000013 +#define B4800 0000014 +#define B9600 0000015 +#define B19200 0000016 +#define B38400 0000017 #ifdef __USE_MISC -# define EXTA B19200 -# define EXTB B38400 +# define EXTA B19200 +# define EXTB B38400 #endif -#define CSIZE 0000060 -#define CS5 0000000 -#define CS6 0000020 -#define CS7 0000040 -#define CS8 0000060 -#define CSTOPB 0000100 -#define CREAD 0000200 -#define PARENB 0000400 -#define PARODD 0001000 -#define HUPCL 0002000 -#define CLOCAL 0004000 +#define CSIZE 0000060 +#define CS5 0000000 +#define CS6 0000020 +#define CS7 0000040 +#define CS8 0000060 +#define CSTOPB 0000100 +#define CREAD 0000200 +#define PARENB 0000400 +#define PARODD 0001000 +#define HUPCL 0002000 +#define CLOCAL 0004000 #ifdef __USE_MISC -# define CBAUDEX 0010000 +# define CBAUDEX 0010000 #endif -#define B57600 0010001 -#define B115200 0010002 -#define B230400 0010003 -#define B460800 0010004 -#define B500000 0010005 -#define B576000 0010006 -#define B921600 0010007 -#define B1000000 0010010 -#define B1152000 0010011 -#define B1500000 0010012 -#define B2000000 0010013 -#define B2500000 0010014 -#define B3000000 0010015 -#define B3500000 0010016 -#define B4000000 0010017 +#define B57600 0010001 +#define B115200 0010002 +#define B230400 0010003 +#define B460800 0010004 +#define B500000 0010005 +#define B576000 0010006 +#define B921600 0010007 +#define B1000000 0010010 +#define B1152000 0010011 +#define B1500000 0010012 +#define B2000000 0010013 +#define B2500000 0010014 +#define B3000000 0010015 +#define B3500000 0010016 +#define B4000000 0010017 #define __MAX_BAUD B4000000 #ifdef __USE_MISC -# define CIBAUD 002003600000 /* input baud rate (not used) */ -# define CMSPAR 010000000000 /* mark or space (stick) parity */ -# define CRTSCTS 020000000000 /* flow control */ +# define CIBAUD 002003600000 /* input baud rate (not used) */ +# define CMSPAR 010000000000 /* mark or space (stick) parity */ +# define CRTSCTS 020000000000 /* flow control */ #endif /* c_lflag bits */ -#define ISIG 0000001 -#define ICANON 0000002 +#define ISIG 0000001 +#define ICANON 0000002 #if defined __USE_MISC || (defined __USE_XOPEN && !defined __USE_XOPEN2K) -# define XCASE 0000004 +# define XCASE 0000004 #endif -#define ECHO 0000010 -#define ECHOE 0000020 -#define ECHOK 0000040 -#define ECHONL 0000100 -#define NOFLSH 0000200 -#define TOSTOP 0000400 +#define ECHO 0000010 +#define ECHOE 0000020 +#define ECHOK 0000040 +#define ECHONL 0000100 +#define NOFLSH 0000200 +#define TOSTOP 0000400 #ifdef __USE_MISC -# define ECHOCTL 0001000 -# define ECHOPRT 0002000 -# define ECHOKE 0004000 -# define FLUSHO 0010000 -# define PENDIN 0040000 +# define ECHOCTL 0001000 +# define ECHOPRT 0002000 +# define ECHOKE 0004000 +# define FLUSHO 0010000 +# define PENDIN 0040000 #endif -#define IEXTEN 0100000 +#define IEXTEN 0100000 #ifdef __USE_MISC -# define EXTPROC 0200000 +# define EXTPROC 0200000 #endif /* tcflow() and TCXONC use these */ -#define TCOOFF 0 -#define TCOON 1 -#define TCIOFF 2 -#define TCION 3 +#define TCOOFF 0 +#define TCOON 1 +#define TCIOFF 2 +#define TCION 3 /* tcflush() and TCFLSH use these */ -#define TCIFLUSH 0 -#define TCOFLUSH 1 -#define TCIOFLUSH 2 +#define TCIFLUSH 0 +#define TCOFLUSH 1 +#define TCIOFLUSH 2 /* tcsetattr uses these */ -#define TCSANOW 0 -#define TCSADRAIN 1 -#define TCSAFLUSH 2 +#define TCSANOW 0 +#define TCSADRAIN 1 +#define TCSAFLUSH 2 struct winsize { unsigned short ws_row; @@ -281,36 +281,36 @@ struct termios { tcflag_t c_oflag; tcflag_t c_cflag; tcflag_t c_lflag; - cc_t c_cc[NCCS]; - speed_t c_ispeed; - speed_t c_ospeed; + cc_t c_cc[NCCS]; + speed_t c_ispeed; + speed_t c_ospeed; }; struct stat { - dev_t st_dev; /* ID of device containing file */ - ino_t st_ino; /* inode number */ - mode_t st_mode; /* protection */ - nlink_t st_nlink; /* number of hard links */ - uid_t st_uid; /* user ID of owner */ - gid_t st_gid; /* group ID of owner */ - dev_t st_rdev; /* device ID (if special file) */ - off_t st_size; /* total size, in bytes */ + dev_t st_dev; /* ID of device containing file */ + ino_t st_ino; /* inode number */ + mode_t st_mode; /* protection */ + nlink_t st_nlink; /* number of hard links */ + uid_t st_uid; /* user ID of owner */ + gid_t st_gid; /* group ID of owner */ + dev_t st_rdev; /* device ID (if special file) */ + off_t st_size; /* total size, in bytes */ blksize_t st_blksize; /* blocksize for file system I/O */ - blkcnt_t st_blocks; /* number of 512B blocks allocated */ - time_t st_atime; /* time of last access */ - time_t st_mtime; /* time of last modification */ - time_t st_ctime; /* time of last status change */ + blkcnt_t st_blocks; /* number of 512B blocks allocated */ + time_t st_atime; /* time of last access */ + time_t st_mtime; /* time of last modification */ + time_t st_ctime; /* time of last status change */ }; -#define POLLIN (1u << 0) -#define POLLPRI (1u << 2) -#define POLLOUT (1u << 3) -#define POLLERR (1u << 4) -#define POLLHUP (1u << 5) +#define POLLIN (1u << 0) +#define POLLPRI (1u << 2) +#define POLLOUT (1u << 3) +#define POLLERR (1u << 4) +#define POLLHUP (1u << 5) #define POLLNVAL (1u << 6) struct pollfd { - int fd; + int fd; short events; short revents; }; @@ -345,7 +345,7 @@ struct sockaddr { char sa_data[14]; }; -#define S_IFSOCK 0140000 +#define S_IFSOCK 0140000 #define UNIX_PATH_MAX 108 struct sockaddr_un { @@ -388,7 +388,8 @@ struct utsname { char machine[UTSNAME_ENTRY_LEN]; }; -struct [[gnu::packed]] FarPtr { +struct [[gnu::packed]] FarPtr +{ dword offset { 0 }; word selector { 0 }; }; diff --git a/Kernel/VM/MemoryManager.h b/Kernel/VM/MemoryManager.h index 3615826fb3..b45cfcbf00 100644 --- a/Kernel/VM/MemoryManager.h +++ b/Kernel/VM/MemoryManager.h @@ -1,27 +1,28 @@ #pragma once -#include <AK/Types.h> #include "i386.h" +#include <AK/AKString.h> +#include <AK/Badge.h> #include <AK/Bitmap.h> #include <AK/ByteBuffer.h> -#include <AK/Retainable.h> +#include <AK/HashTable.h> #include <AK/RetainPtr.h> +#include <AK/Retainable.h> +#include <AK/Types.h> #include <AK/Vector.h> -#include <AK/HashTable.h> -#include <AK/AKString.h> -#include <AK/Badge.h> #include <AK/Weakable.h> +#include <Kernel/FileSystem/InodeIdentifier.h> #include <Kernel/LinearAddress.h> #include <Kernel/VM/PhysicalPage.h> #include <Kernel/VM/Region.h> #include <Kernel/VM/VMObject.h> -#include <Kernel/FileSystem/InodeIdentifier.h> -#define PAGE_ROUND_UP(x) ((((dword)(x)) + PAGE_SIZE-1) & (~(PAGE_SIZE-1))) +#define PAGE_ROUND_UP(x) ((((dword)(x)) + PAGE_SIZE - 1) & (~(PAGE_SIZE - 1))) class SynthFSInode; -enum class PageFaultResponse { +enum class PageFaultResponse +{ ShouldCrash, Continue, }; @@ -36,6 +37,7 @@ class MemoryManager { friend class VMObject; friend ByteBuffer procfs$mm(InodeIdentifier); friend ByteBuffer procfs$memstat(InodeIdentifier); + public: [[gnu::pure]] static MemoryManager& the(); @@ -54,7 +56,11 @@ public: bool validate_user_read(const Process&, LinearAddress) const; bool validate_user_write(const Process&, LinearAddress) const; - enum class ShouldZeroFill { No, Yes }; + enum class ShouldZeroFill + { + No, + Yes + }; RetainPtr<PhysicalPage> allocate_physical_page(ShouldZeroFill); RetainPtr<PhysicalPage> allocate_supervisor_physical_page(); @@ -106,7 +112,10 @@ private: PageDirectory& kernel_page_directory() { return *m_kernel_page_directory; } struct PageDirectoryEntry { - explicit PageDirectoryEntry(dword* pde) : m_pde(pde) { } + explicit PageDirectoryEntry(dword* pde) + : m_pde(pde) + { + } dword* page_table_base() { return reinterpret_cast<dword*>(raw() & 0xfffff000u); } void set_page_table_base(dword value) @@ -118,7 +127,8 @@ private: dword raw() const { return *m_pde; } dword* ptr() { return m_pde; } - enum Flags { + enum Flags + { Present = 1 << 0, ReadWrite = 1 << 1, UserSupervisor = 1 << 2, @@ -153,7 +163,10 @@ private: }; struct PageTableEntry { - explicit PageTableEntry(dword* pte) : m_pte(pte) { } + explicit PageTableEntry(dword* pte) + : m_pte(pte) + { + } dword* physical_page_base() { return reinterpret_cast<dword*>(raw() & 0xfffff000u); } void set_physical_page_base(dword value) @@ -165,7 +178,8 @@ private: dword raw() const { return *m_pte; } dword* ptr() { return m_pte; } - enum Flags { + enum Flags + { Present = 1 << 0, ReadWrite = 1 << 1, UserSupervisor = 1 << 2, diff --git a/Kernel/VM/PageDirectory.h b/Kernel/VM/PageDirectory.h index 409a5f919c..8207389ab7 100644 --- a/Kernel/VM/PageDirectory.h +++ b/Kernel/VM/PageDirectory.h @@ -1,13 +1,14 @@ #pragma once -#include <Kernel/VM/PhysicalPage.h> -#include <Kernel/VM/RangeAllocator.h> #include <AK/HashMap.h> -#include <AK/Retainable.h> #include <AK/RetainPtr.h> +#include <AK/Retainable.h> +#include <Kernel/VM/PhysicalPage.h> +#include <Kernel/VM/RangeAllocator.h> class PageDirectory : public Retainable<PageDirectory> { friend class MemoryManager; + public: static Retained<PageDirectory> create_for_userspace(const RangeAllocator* parent_range_allocator = nullptr) { return adopt(*new PageDirectory(parent_range_allocator)); } static Retained<PageDirectory> create_at_fixed_address(PhysicalAddress paddr) { return adopt(*new PageDirectory(paddr)); } diff --git a/Kernel/VM/PhysicalPage.h b/Kernel/VM/PhysicalPage.h index 2d9cd88677..bf2726bcef 100644 --- a/Kernel/VM/PhysicalPage.h +++ b/Kernel/VM/PhysicalPage.h @@ -1,13 +1,14 @@ #pragma once +#include <AK/Retained.h> #include <Kernel/Assertions.h> #include <Kernel/PhysicalAddress.h> -#include <AK/Retained.h> class PhysicalPage { friend class MemoryManager; friend class PageDirectory; friend class VMObject; + public: PhysicalAddress paddr() const { return m_paddr; } @@ -35,7 +36,7 @@ public: private: PhysicalPage(PhysicalAddress paddr, bool supervisor, bool may_return_to_freelist = true); - ~PhysicalPage() { } + ~PhysicalPage() {} void return_to_freelist(); diff --git a/Kernel/VM/RangeAllocator.h b/Kernel/VM/RangeAllocator.h index e80e1278ca..7381aa5db7 100644 --- a/Kernel/VM/RangeAllocator.h +++ b/Kernel/VM/RangeAllocator.h @@ -1,12 +1,13 @@ #pragma once -#include <Kernel/LinearAddress.h> #include <AK/Vector.h> +#include <Kernel/LinearAddress.h> class Range { friend class RangeAllocator; + public: - Range() { } + Range() {} Range(LinearAddress base, size_t size) : m_base(base) , m_size(size) diff --git a/Kernel/VM/Region.h b/Kernel/VM/Region.h index 806fa6460c..254469cf1d 100644 --- a/Kernel/VM/Region.h +++ b/Kernel/VM/Region.h @@ -10,6 +10,7 @@ class VMObject; class Region : public Retainable<Region> { friend class MemoryManager; + public: Region(const Range&, String&&, bool r, bool w, bool cow = false); Region(const Range&, Retained<VMObject>&&, size_t offset_in_vmo, String&&, bool r, bool w, bool cow = false); diff --git a/Kernel/VM/VMObject.h b/Kernel/VM/VMObject.h index 4a0fee7436..0f7b9c4fea 100644 --- a/Kernel/VM/VMObject.h +++ b/Kernel/VM/VMObject.h @@ -1,11 +1,11 @@ #pragma once +#include <AK/AKString.h> #include <AK/Badge.h> -#include <AK/Retainable.h> -#include <AK/Weakable.h> #include <AK/RetainPtr.h> +#include <AK/Retainable.h> #include <AK/Vector.h> -#include <AK/AKString.h> +#include <AK/Weakable.h> #include <Kernel/Lock.h> #include <Kernel/PhysicalAddress.h> #include <Kernel/UnixTypes.h> @@ -13,8 +13,10 @@ class Inode; class PhysicalPage; -class VMObject : public Retainable<VMObject>, public Weakable<VMObject> { +class VMObject : public Retainable<VMObject> + , public Weakable<VMObject> { friend class MemoryManager; + public: static Retained<VMObject> create_file_backed(RetainPtr<Inode>&&); static Retained<VMObject> create_anonymous(size_t); @@ -46,7 +48,8 @@ private: explicit VMObject(size_t); VMObject(PhysicalAddress, size_t); - template<typename Callback> void for_each_region(Callback); + template<typename Callback> + void for_each_region(Callback); String m_name; bool m_allow_cpu_caching { true }; diff --git a/Kernel/i386.h b/Kernel/i386.h index c770d45286..a323947d03 100644 --- a/Kernel/i386.h +++ b/Kernel/i386.h @@ -1,12 +1,13 @@ #pragma once -#include <Kernel/kstdio.h> #include <Kernel/LinearAddress.h> +#include <Kernel/kstdio.h> #define PAGE_SIZE 4096 #define PAGE_MASK 0xfffff000 -struct [[gnu::packed]] TSS32 { +struct [[gnu::packed]] TSS32 +{ word backlink, __blh; dword esp0; word ss0, __ss0h; @@ -15,7 +16,7 @@ struct [[gnu::packed]] TSS32 { dword esp2; word ss2, __ss2h; dword cr3, eip, eflags; - dword eax,ecx,edx,ebx,esp,ebp,esi,edi; + dword eax, ecx, edx, ebx, esp, ebp, esi, edi; word es, __esh; word cs, __csh; word ss, __ssh; @@ -26,7 +27,8 @@ struct [[gnu::packed]] TSS32 { word trace, iomapbase; }; -union [[gnu::packed]] Descriptor { +union [[gnu::packed]] Descriptor +{ struct { word limit_lo; word base_lo; @@ -47,7 +49,8 @@ union [[gnu::packed]] Descriptor { dword high; }; - enum Type { + enum Type + { Invalid = 0, AvailableTSS_16bit = 0x1, LDT = 0x2, @@ -65,7 +68,7 @@ union [[gnu::packed]] Descriptor { void set_base(void* b) { - base_lo = (dword)(b) & 0xffff; + base_lo = (dword)(b)&0xffff; base_hi = ((dword)(b) >> 16) & 0xff; base_hi2 = ((dword)(b) >> 24) & 0xff; } @@ -97,22 +100,27 @@ void write_gdt_entry(word selector, Descriptor&); [[noreturn]] static inline void hang() { asm volatile("cli; hlt"); - for (;;) { } + for (;;) { + } } -#define LSW(x) ((dword)(x) & 0xFFFF) +#define LSW(x) ((dword)(x)&0xFFFF) #define MSW(x) (((dword)(x) >> 16) & 0xFFFF) -#define LSB(x) ((x) & 0xFF) -#define MSB(x) (((x)>>8) & 0xFF) +#define LSB(x) ((x)&0xFF) +#define MSB(x) (((x) >> 8) & 0xFF) -#define cli() asm volatile("cli" ::: "memory") -#define sti() asm volatile("sti" ::: "memory") -#define memory_barrier() asm volatile ("" ::: "memory") +#define cli() asm volatile("cli" :: \ + : "memory") +#define sti() asm volatile("sti" :: \ + : "memory") +#define memory_barrier() asm volatile("" :: \ + : "memory") inline dword cpu_cr3() { dword cr3; - asm volatile("movl %%cr3, %%eax":"=a"(cr3)); + asm volatile("movl %%cr3, %%eax" + : "=a"(cr3)); return cr3; } @@ -122,8 +130,7 @@ inline dword cpu_flags() asm volatile( "pushf\n" "pop %0\n" - :"=rm"(flags) - ::"memory"); + : "=rm"(flags)::"memory"); return flags; } @@ -173,15 +180,16 @@ private: #define IRQ_VECTOR_BASE 0x50 struct PageFaultFlags { -enum Flags { - NotPresent = 0x00, - ProtectionViolation = 0x01, - Read = 0x00, - Write = 0x02, - UserMode = 0x04, - SupervisorMode = 0x00, - InstructionFetch = 0x08, -}; + enum Flags + { + NotPresent = 0x00, + ProtectionViolation = 0x01, + Read = 0x00, + Write = 0x02, + UserMode = 0x04, + SupervisorMode = 0x00, + InstructionFetch = 0x08, + }; }; class PageFault { @@ -208,7 +216,8 @@ private: LinearAddress m_laddr; }; -struct [[gnu::packed]] RegisterDump { +struct [[gnu::packed]] RegisterDump +{ word ss; word gs; word fs; @@ -230,7 +239,8 @@ struct [[gnu::packed]] RegisterDump { word ss_if_crossRing; }; -struct [[gnu::packed]] RegisterDumpWithExceptionCode { +struct [[gnu::packed]] RegisterDumpWithExceptionCode +{ word ss; word gs; word fs; @@ -254,7 +264,8 @@ struct [[gnu::packed]] RegisterDumpWithExceptionCode { word ss_if_crossRing; }; -struct [[gnu::aligned(16)]] FPUState { +struct [[gnu::aligned(16)]] FPUState +{ byte buffer[512]; }; @@ -265,11 +276,14 @@ inline constexpr dword page_base_of(dword address) class CPUID { public: - CPUID(dword function) { asm volatile("cpuid" : "=a" (m_eax), "=b" (m_ebx), "=c" (m_ecx), "=d" (m_edx) : "a" (function), "c" (0)); } + CPUID(dword function) { asm volatile("cpuid" + : "=a"(m_eax), "=b"(m_ebx), "=c"(m_ecx), "=d"(m_edx) + : "a"(function), "c"(0)); } dword eax() const { return m_eax; } dword ebx() const { return m_ebx; } dword ecx() const { return m_ecx; } dword edx() const { return m_edx; } + private: dword m_eax { 0xffffffff }; dword m_ebx { 0xffffffff }; @@ -279,7 +293,8 @@ private: inline void read_tsc(dword& lsw, dword& msw) { - asm volatile("rdtsc":"=d"(msw),"=a"(lsw)); + asm volatile("rdtsc" + : "=d"(msw), "=a"(lsw)); } struct Stopwatch { @@ -290,6 +305,7 @@ struct Stopwatch { }; uint64_t qw { 0 }; }; + public: Stopwatch(const char* name) : m_name(name) diff --git a/Kernel/i8253.h b/Kernel/i8253.h index c537036f2a..573399d1a1 100644 --- a/Kernel/i8253.h +++ b/Kernel/i8253.h @@ -2,26 +2,26 @@ #include <AK/Types.h> -#define TICKS_PER_SECOND 1000 +#define TICKS_PER_SECOND 1000 /* Timer related ports */ -#define TIMER0_CTL 0x40 -#define TIMER1_CTL 0x41 -#define TIMER2_CTL 0x42 -#define PIT_CTL 0x43 +#define TIMER0_CTL 0x40 +#define TIMER1_CTL 0x41 +#define TIMER2_CTL 0x42 +#define PIT_CTL 0x43 /* Building blocks for PIT_CTL */ -#define TIMER0_SELECT 0x00 -#define TIMER1_SELECT 0x40 -#define TIMER2_SELECT 0x80 +#define TIMER0_SELECT 0x00 +#define TIMER1_SELECT 0x40 +#define TIMER2_SELECT 0x80 -#define MODE_COUNTDOWN 0x00 -#define MODE_ONESHOT 0x02 -#define MODE_RATE 0x04 -#define MODE_SQUARE_WAVE 0x06 +#define MODE_COUNTDOWN 0x00 +#define MODE_ONESHOT 0x02 +#define MODE_RATE 0x04 +#define MODE_SQUARE_WAVE 0x06 -#define WRITE_WORD 0x30 +#define WRITE_WORD 0x30 -#define BASE_FREQUENCY 1193182 +#define BASE_FREQUENCY 1193182 namespace PIT { diff --git a/Kernel/kstdio.h b/Kernel/kstdio.h index d44d215f64..00509e320c 100644 --- a/Kernel/kstdio.h +++ b/Kernel/kstdio.h @@ -1,11 +1,11 @@ #pragma once extern "C" { -int dbgprintf(const char *fmt, ...); -int kprintf(const char *fmt, ...); -int ksprintf(char* buf, const char *fmt, ...); +int dbgprintf(const char* fmt, ...); +int kprintf(const char* fmt, ...); +int ksprintf(char* buf, const char* fmt, ...); } #ifndef USERLAND -#define printf dbgprintf +# define printf dbgprintf #endif diff --git a/Kernel/makeall.sh b/Kernel/makeall.sh index 09dbc40463..fc2fa28cad 100755 --- a/Kernel/makeall.sh +++ b/Kernel/makeall.sh @@ -38,6 +38,7 @@ build_targets="$build_targets ." # the kernel for targ in $build_targets; do echo "Building $targ" + #(cd "$targ" && find . -name "*.c" -o -name "*.cpp" -o -name "*.h" -exec clang-format -i {} \;) $make_cmd -C "$targ" clean $make_cmd -C "$targ" |