summaryrefslogtreecommitdiff
path: root/Kernel/Devices/OffsetDiskDevice.cpp
blob: 74d66853c477b4e06be3b83d69bc808bbac2dcd6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <Kernel/Devices/OffsetDiskDevice.h>

// #define OFFD_DEBUG

Retained<OffsetDiskDevice> OffsetDiskDevice::create(Retained<DiskDevice>&& device, unsigned block_offset)
{
    return adopt(*new OffsetDiskDevice(move(device), block_offset));
}

OffsetDiskDevice::OffsetDiskDevice(Retained<DiskDevice>&& device, unsigned block_offset)
    : m_device(move(device)), m_block_offset(block_offset)
{
}

OffsetDiskDevice::~OffsetDiskDevice()
{
}

unsigned OffsetDiskDevice::block_size() const
{
    return m_device->block_size();
}

bool OffsetDiskDevice::read_block(unsigned index, byte* out) const
{
#ifdef OFFD_DEBUG
    kprintf("OffsetDiskDevice::read_block %u (really: %u)\n", index, m_block_offset + index);
#endif

    return m_device->read_block(m_block_offset + index, out);
}

bool OffsetDiskDevice::write_block(unsigned index, const byte* data)
{
#ifdef OFFD_DEBUG
    kprintf("OffsetDiskDevice::write_block %u (really: %u)\n", index, m_block_offset + index);
#endif

    return m_device->write_block(m_block_offset + index, data);
}

bool OffsetDiskDevice::read_blocks(unsigned index, word count, byte* out)
{
#ifdef OFFD_DEBUG
    kprintf("OffsetDiskDevice::read_blocks %u (really: %u) count=%u\n", index, m_block_offset + index, count);
#endif

    return m_device->read_blocks(m_block_offset + index, count, out);
}

bool OffsetDiskDevice::write_blocks(unsigned index, word count, const byte* data)
{
#ifdef OFFD_DEBUG
    kprintf("OffsetDiskDevice::write_blocks %u (really: %u) count=%u\n", index, m_block_offset + index, count);
#endif

    return m_device->write_blocks(m_block_offset + index, count, data);
}

const char* OffsetDiskDevice::class_name() const
{
    return "OffsetDiskDevice";
}