projects
/
bertos.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix comments.
[bertos.git]
/
bertos
/
io
/
kblock_ram.c
diff --git
a/bertos/io/kblock_ram.c
b/bertos/io/kblock_ram.c
index eff9675f721d30f9f34f61537518e21b36d68cfb..b936e90236d7b69f3c736fac2eca28ccc224c2f9 100644
(file)
--- a/
bertos/io/kblock_ram.c
+++ b/
bertos/io/kblock_ram.c
@@
-32,7
+32,12
@@
*
* \author Francesco Sacchi <batt@develer.com>
*
*
* \author Francesco Sacchi <batt@develer.com>
*
- * \brief KBlock interface
+ * \brief KBlock interface on RAM memory
+ *
+ * \author Francesco Sacchi <batt@develer.com>
+ *
+ * $WIZ$ module_name = "kfile_ram"
+ * $WIZ$ module_depends = "kblock"
*/
*/
@@
-75,14
+80,14
@@
static size_t kblockram_writeBuf(struct KBlock *b, const void *buf, size_t offse
return size;
}
return size;
}
-static
int kblockram_writeBlock(struct KBlock *b, block_idx_t index, const void *buf
)
+static
size_t kblockram_writeDirect(struct KBlock *b, block_idx_t index, const void *buf, size_t offset, size_t size
)
{
KBlockRam *r = KBLOCKRAM_CAST(b);
ASSERT(buf);
ASSERT(index < b->blk_cnt);
{
KBlockRam *r = KBLOCKRAM_CAST(b);
ASSERT(buf);
ASSERT(index < b->blk_cnt);
- memcpy(r->membuf + index * r->b.blk_size
, buf, r->b.blk_
size);
- return
0
;
+ memcpy(r->membuf + index * r->b.blk_size
+ offset, buf,
size);
+ return
size
;
}
static int kblockram_dummy(UNUSED_ARG(struct KBlock *,b))
}
static int kblockram_dummy(UNUSED_ARG(struct KBlock *,b))
@@
-93,14
+98,14
@@
static int kblockram_dummy(UNUSED_ARG(struct KBlock *,b))
static const KBlockVTable kblockram_hwbuffered_vt =
{
.readDirect = kblockram_readDirect,
static const KBlockVTable kblockram_hwbuffered_vt =
{
.readDirect = kblockram_readDirect,
-
+
.readBuf = kblockram_readBuf,
.writeBuf = kblockram_writeBuf,
.load = kblockram_load,
.store = kblockram_store,
.readBuf = kblockram_readBuf,
.writeBuf = kblockram_writeBuf,
.load = kblockram_load,
.store = kblockram_store,
-
+
.error = kblockram_dummy,
.error = kblockram_dummy,
- .clearerr = kblockram_dummy,
+ .clearerr =
(kblock_clearerr_t)
kblockram_dummy,
.close = kblockram_dummy,
};
.close = kblockram_dummy,
};
@@
-108,25
+113,25
@@
static const KBlockVTable kblockram_hwbuffered_vt =
static const KBlockVTable kblockram_swbuffered_vt =
{
.readDirect = kblockram_readDirect,
static const KBlockVTable kblockram_swbuffered_vt =
{
.readDirect = kblockram_readDirect,
- .write
Block = kblockram_writeBlock
,
-
+ .write
Direct = kblockram_writeDirect
,
+
.readBuf = kblock_swReadBuf,
.writeBuf = kblock_swWriteBuf,
.load = kblock_swLoad,
.store = kblock_swStore,
.readBuf = kblock_swReadBuf,
.writeBuf = kblock_swWriteBuf,
.load = kblock_swLoad,
.store = kblock_swStore,
-
+
.error = kblockram_dummy,
.error = kblockram_dummy,
- .clearerr = kblockram_dummy,
+ .clearerr =
(kblock_clearerr_t)
kblockram_dummy,
.close = kblockram_dummy,
};
static const KBlockVTable kblockram_unbuffered_vt =
{
.readDirect = kblockram_readDirect,
.close = kblockram_dummy,
};
static const KBlockVTable kblockram_unbuffered_vt =
{
.readDirect = kblockram_readDirect,
- .write
Block = kblockram_writeBlock
,
+ .write
Direct = kblockram_writeDirect
,
.error = kblockram_dummy,
.error = kblockram_dummy,
- .clearerr = kblockram_dummy,
+ .clearerr =
(kblock_clearerr_t)
kblockram_dummy,
.close = kblockram_dummy,
};
.close = kblockram_dummy,
};
@@
-140,7
+145,8
@@
void kblockram_init(KBlockRam *ram, void *buf, size_t size, size_t block_size, b
DB(ram->b.priv.type = KBT_KBLOCKRAM);
ram->b.blk_size = block_size;
DB(ram->b.priv.type = KBT_KBLOCKRAM);
ram->b.blk_size = block_size;
-
+ ram->b.priv.flags |= KB_PARTIAL_WRITE;
+
if (buffered)
{
ram->b.priv.flags |= KB_BUFFERED;
if (buffered)
{
ram->b.priv.flags |= KB_BUFFERED;
@@
-148,12
+154,12
@@
void kblockram_init(KBlockRam *ram, void *buf, size_t size, size_t block_size, b
ram->b.priv.buf = buf;
// First page used as page buffer
ram->membuf = (uint8_t *)buf + block_size;
ram->b.priv.buf = buf;
// First page used as page buffer
ram->membuf = (uint8_t *)buf + block_size;
-
+
if (hwbuffered)
ram->b.priv.vt = &kblockram_hwbuffered_vt;
else
ram->b.priv.vt = &kblockram_swbuffered_vt;
if (hwbuffered)
ram->b.priv.vt = &kblockram_hwbuffered_vt;
else
ram->b.priv.vt = &kblockram_swbuffered_vt;
-
+
kblockram_load(&ram->b, 0);
}
else
kblockram_load(&ram->b, 0);
}
else