X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fio%2Fkblock_file.c;h=ae680815ade31890bcd18693a2f3bf405819e18a;hb=6f3d154da0d0b7b7110a824815b132d041cb0905;hp=c445612e128ce8ae353e0edc6247ae8a67ae4763;hpb=2bc2b05bc4ee047d9287d97f504ae737507b5d5b;p=bertos.git diff --git a/bertos/io/kblock_file.c b/bertos/io/kblock_file.c index c445612e..ae680815 100644 --- a/bertos/io/kblock_file.c +++ b/bertos/io/kblock_file.c @@ -88,15 +88,6 @@ static int kblockfile_writeBlock(struct KBlock *b, block_idx_t index, const void return (fwrite(f->b.priv.buf, 1, b->blk_size, f->fp) == b->blk_size) ? 0 : EOF; } -static int kblockfile_readBlock(struct KBlock *b, block_idx_t index, void *buf) -{ - KBlockFile *f = KBLOCKFILE_CAST(b); - ASSERT(buf); - ASSERT(index < b->blk_cnt); - fseek(f->fp, index * b->blk_size, SEEK_SET); - return (fread(f->b.priv.buf, 1, b->blk_size, f->fp) == b->blk_size) ? 0 : EOF; -} - static int kblockfile_error(struct KBlock *b) { KBlockFile *f = KBLOCKFILE_CAST(b); @@ -123,14 +114,12 @@ static int kblockfile_close(struct KBlock *b) static const KBlockVTable kblockfile_hwbuffered_vt = { .readDirect = kblockfile_readDirect, + .readBuf = kblockfile_readBuf, .writeBuf = kblockfile_writeBuf, .load = kblockfile_load, .store = kblockfile_store, - .readBlock = kblock_swReadBlock, - .writeBlock = kblock_swWriteBlock, - .error = kblockfile_error, .clearerr = kblockfile_claererr, .close = kblockfile_close, @@ -138,15 +127,14 @@ static const KBlockVTable kblockfile_hwbuffered_vt = static const KBlockVTable kblockfile_swbuffered_vt = { - .readDirect = kblock_swReadDirect, + .readDirect = kblockfile_readDirect, + .writeBlock =kblockfile_writeBlock, + .readBuf = kblock_swReadBuf, .writeBuf = kblock_swWriteBuf, .load = kblock_swLoad, .store = kblock_swStore, - .readBlock = kblockfile_readBlock, - .writeBlock =kblockfile_writeBlock, - .error = kblockfile_error, .clearerr = kblockfile_claererr, .close = kblockfile_close, @@ -154,7 +142,7 @@ static const KBlockVTable kblockfile_swbuffered_vt = static const KBlockVTable kblockfile_unbuffered_vt = { - .readBlock = kblockfile_readBlock, + .readDirect = kblockfile_readDirect, .writeBlock =kblockfile_writeBlock, .error = kblockfile_error, @@ -188,7 +176,6 @@ void kblockfile_init(KBlockFile *f, FILE *fp, bool hwbuf, void *buf, size_t bloc f->b.priv.vt = &kblockfile_swbuffered_vt; kblockfile_load(&f->b, 0); f->b.priv.curr_blk = 0; - f->b.priv.cache_dirty = false; } else f->b.priv.vt = &kblockfile_unbuffered_vt;