diff options
author | Benji Dial <benji@benjidial.net> | 2024-01-10 00:17:29 -0500 |
---|---|---|
committer | Benji Dial <benji@benjidial.net> | 2024-01-10 00:17:29 -0500 |
commit | 15e62510104bc0e2b9180b66e5845d985cac03cc (patch) | |
tree | fa950c29622823a825a523e63de610746a70cbe1 /kernel/bd | |
parent | c2f48fb5df0981df1df23de2b277274f9fe75080 (diff) | |
download | hilbert-os-15e62510104bc0e2b9180b66e5845d985cac03cc.tar.gz |
partial (largely untested) memory block device and tar file system support
Diffstat (limited to 'kernel/bd')
-rw-r--r-- | kernel/bd/memory.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/kernel/bd/memory.cpp b/kernel/bd/memory.cpp new file mode 100644 index 0000000..1015e40 --- /dev/null +++ b/kernel/bd/memory.cpp @@ -0,0 +1,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; + } + +} |