1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-18 10:25:07 +00:00
serenity/Kernel/Storage/Partition/EBRPartitionTable.h
Liav A 5ed3f7c6bf Kernel/Storage: Migrate the partition code to use the ErrorOr container
That code used the old AK::Result container, which leads to overly
complicated initialization flow when trying to figure out the correct
partition table type. Instead, when using the ErrorOr container the code
is much simpler and more understandable.
2022-04-28 22:13:54 +02:00

33 lines
844 B
C++

/*
* Copyright (c) 2020-2022, Liav A. <liavalb@hotmail.co.il>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/Error.h>
#include <AK/NonnullOwnPtr.h>
#include <AK/RefPtr.h>
#include <AK/Result.h>
#include <AK/Vector.h>
#include <Kernel/Storage/Partition/DiskPartition.h>
#include <Kernel/Storage/Partition/MBRPartitionTable.h>
namespace Kernel {
struct EBRPartitionHeader;
class EBRPartitionTable : public MBRPartitionTable {
public:
~EBRPartitionTable();
static ErrorOr<NonnullOwnPtr<EBRPartitionTable>> try_to_initialize(StorageDevice const&);
explicit EBRPartitionTable(StorageDevice const&);
virtual bool is_valid() const override { return m_valid; };
private:
void search_extended_partition(StorageDevice const&, MBRPartitionTable&, u64, size_t limit);
bool m_valid { false };
};
}