Serenity Operating System
1/*
2 * Copyright (c) 2020, Liav A. <liavalb@hotmail.co.il>
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#include <LibPartition/PartitionTable.h>
8
9#ifndef KERNEL
10# include <LibCore/DeprecatedFile.h>
11# include <sys/ioctl.h>
12#endif
13
14namespace Partition {
15
16#ifdef KERNEL
17PartitionTable::PartitionTable(Kernel::StorageDevice& device)
18 : m_device(device)
19 , m_block_size(device.block_size())
20{
21}
22#else
23PartitionTable::PartitionTable(NonnullRefPtr<Core::DeprecatedFile> device_file)
24 : m_device_file(device_file)
25{
26 VERIFY(ioctl(m_device_file->leak_fd(), STORAGE_DEVICE_GET_BLOCK_SIZE, &m_block_size) >= 0);
27}
28#endif
29
30Optional<DiskPartitionMetadata> PartitionTable::partition(unsigned index) const
31{
32 if (index > partitions_count())
33 return {};
34 return m_partitions[index];
35}
36
37}