mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 11:28:12 +00:00
Kernel: Split the FATFileSystem.{cpp,h} files into smaller components
This commit is contained in:
parent
5e6101dd3e
commit
e882b2ed05
9 changed files with 334 additions and 287 deletions
53
Kernel/FileSystem/FATFS/FileSystem.h
Normal file
53
Kernel/FileSystem/FATFS/FileSystem.h
Normal file
|
@ -0,0 +1,53 @@
|
|||
/*
|
||||
* Copyright (c) 2022, Undefine <undefine@undefine.pl>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AK/OwnPtr.h>
|
||||
#include <AK/RefPtr.h>
|
||||
#include <AK/Types.h>
|
||||
#include <Kernel/FileSystem/BlockBasedFileSystem.h>
|
||||
#include <Kernel/FileSystem/FATFS/Definitions.h>
|
||||
#include <Kernel/FileSystem/Inode.h>
|
||||
#include <Kernel/Forward.h>
|
||||
#include <Kernel/KBuffer.h>
|
||||
|
||||
namespace Kernel {
|
||||
|
||||
class FATFS final : public BlockBasedFileSystem {
|
||||
friend FATInode;
|
||||
|
||||
public:
|
||||
static ErrorOr<NonnullLockRefPtr<FileSystem>> try_create(OpenFileDescription&);
|
||||
|
||||
virtual ~FATFS() override = default;
|
||||
virtual StringView class_name() const override { return "FATFS"sv; }
|
||||
virtual Inode& root_inode() override;
|
||||
|
||||
private:
|
||||
virtual ErrorOr<void> initialize_while_locked() override;
|
||||
virtual bool is_initialized_while_locked() override;
|
||||
// FIXME: This is not a proper way to clear last mount of a FAT filesystem,
|
||||
// but for now we simply have no other way to properly do it.
|
||||
virtual ErrorOr<void> prepare_to_clear_last_mount() override { return {}; }
|
||||
|
||||
FATFS(OpenFileDescription&);
|
||||
|
||||
static constexpr u8 signature_1 = 0x28;
|
||||
static constexpr u8 signature_2 = 0x29;
|
||||
|
||||
static constexpr u32 first_data_cluster = 2;
|
||||
|
||||
FAT32BootRecord const* boot_record() const { return reinterpret_cast<FAT32BootRecord const*>(m_boot_record->data()); };
|
||||
|
||||
BlockBasedFileSystem::BlockIndex first_block_of_cluster(u32 cluster) const;
|
||||
|
||||
OwnPtr<KBuffer> m_boot_record;
|
||||
LockRefPtr<FATInode> m_root_inode;
|
||||
u32 m_first_data_sector;
|
||||
};
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue