X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fio%2Fkblock.c;h=9c21f56659b6e34a9f92c53bd8e35755395aba32;hb=328675078ae8cd81cfa3524ad9cd082621a18566;hp=0f8ac27454172c76bac159dac3048ff028bdf394;hpb=5fd323fa3c1ac486d973338e575b34e9948bfb69;p=bertos.git diff --git a/bertos/io/kblock.c b/bertos/io/kblock.c index 0f8ac274..9c21f566 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,20 @@ 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_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);