Serenity Operating System
at master 37 lines 806 B view raw
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}