Serenity Operating System
1/*
2 * Copyright (c) 2021, Liav A. <liavalb@hotmail.co.il>
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#include <AK/StringView.h>
8#include <Kernel/Devices/DeviceManagement.h>
9#include <Kernel/Sections.h>
10#include <Kernel/Storage/ATA/ATADiskDevice.h>
11#include <Kernel/Storage/StorageManagement.h>
12
13namespace Kernel {
14
15NonnullLockRefPtr<ATADiskDevice> ATADiskDevice::create(ATAController const& controller, ATADevice::Address ata_address, u16 capabilities, u16 logical_sector_size, u64 max_addressable_block)
16{
17 auto disk_device_or_error = DeviceManagement::try_create_device<ATADiskDevice>(controller, ata_address, capabilities, logical_sector_size, max_addressable_block);
18 // FIXME: Find a way to propagate errors
19 VERIFY(!disk_device_or_error.is_error());
20 return disk_device_or_error.release_value();
21}
22
23ATADiskDevice::ATADiskDevice(ATAController const& controller, ATADevice::Address ata_address, u16 capabilities, u16 logical_sector_size, u64 max_addressable_block)
24 : ATADevice(controller, ata_address, capabilities, logical_sector_size, max_addressable_block)
25{
26}
27
28ATADiskDevice::~ATADiskDevice() = default;
29
30StringView ATADiskDevice::class_name() const
31{
32 return "ATADiskDevice"sv;
33}
34
35}