+
+static const KBlockVTable kblockram_swbuffered_vt =
+{
+ .readDirect = kblockram_readDirect,
+ .writeDirect = kblockram_writeDirect,
+
+ .readBuf = kblock_swReadBuf,
+ .writeBuf = kblock_swWriteBuf,
+ .load = kblock_swLoad,
+ .store = kblock_swStore,
+
+ .error = kblockram_dummy,
+ .clearerr = (kblock_clearerr_t)kblockram_dummy,
+ .close = kblockram_dummy,
+};
+
+static const KBlockVTable kblockram_unbuffered_vt =
+{
+ .readDirect = kblockram_readDirect,
+ .writeDirect = kblockram_writeDirect,
+
+ .error = kblockram_dummy,
+ .clearerr = (kblock_clearerr_t)kblockram_dummy,
+ .close = kblockram_dummy,
+};
+
+void kblockram_init(KBlockRam *ram, void *buf, size_t size, size_t block_size, bool buffered, bool hwbuffered)