summaryrefslogtreecommitdiff
path: root/kernel/bd/memory.cpp
blob: 1015e40bfdf9eed7d035f91e67ec96a5e0834f47 (plain) (blame)
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
#include <mercury/kernel/bd/memory.hpp>

namespace mercury::kernel::bd {

  memory::memory(void *buffer, size_t buffer_len) : buffer((uint8_t *)buffer) {
    block_size = 1;
    block_count = buffer_len;
    //block cache will never be used, since the block size is 1.
  }

  storage::io_result memory::read_blocks_no_cache(
    uint64_t start, uint64_t count, void *into
  ) {
    for (uint64_t i = 0; i < count; ++i)
      ((uint8_t *)into)[i] = buffer[start + i];
    return storage::io_result::success;
  }

  storage::io_result memory::write_blocks_no_cache(
    uint64_t start, uint64_t count, const void *into
  ) {
    for (uint64_t i = 0; i < count; ++i)
      buffer[start + i] = ((uint8_t *)into)[i];
    return storage::io_result::success;
  }

}