X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fio%2Fkblock.c;h=117c3e9b48ef3b9b51b43f134778580c87ea2df6;hb=ed914dcd14bb340d61a8bc011ec0cd7a0312ed79;hp=0f8ac27454172c76bac159dac3048ff028bdf394;hpb=5fd323fa3c1ac486d973338e575b34e9948bfb69;p=bertos.git diff --git a/bertos/io/kblock.c b/bertos/io/kblock.c index 0f8ac274..117c3e9b 100644 --- a/bertos/io/kblock.c +++ b/bertos/io/kblock.c @@ -100,7 +100,6 @@ INLINE void kblock_setDirty(struct KBlock *b, bool dirty) } - size_t kblock_read(struct KBlock *b, block_idx_t idx, void *buf, size_t offset, size_t size) { ASSERT(b); @@ -150,6 +149,23 @@ static bool kblock_loadPage(struct KBlock *b, block_idx_t idx) } +int kblock_trim(struct KBlock *b, block_idx_t start, block_idx_t count) +{ + ASSERT(start + count <= b->blk_cnt); + + if (kblock_buffered(b)) + { + if (!kblock_loadPage(b, start)) + return EOF; + } + + b->priv.blk_start += start; + b->priv.curr_blk = 0; // adjust logical address + b->blk_cnt = count; + return 0; +} + + size_t kblock_write(struct KBlock *b, block_idx_t idx, const void *buf, size_t offset, size_t size) { ASSERT(b);