/trunk/uspace/lib/libblock/libblock.c |
---|
176,6 → 176,7 |
int block_bb_read(dev_handle_t dev_handle, off_t off, size_t size) |
{ |
void *bb_buf; |
int rc; |
devcon_t *devcon = devcon_search(dev_handle); |
if (!devcon) |
188,10 → 189,11 |
off_t bufpos = 0; |
size_t buflen = 0; |
if (!block_read(dev_handle, &bufpos, &buflen, &off, |
bb_buf, size, size)) { |
rc = block_read(dev_handle, &bufpos, &buflen, &off, |
bb_buf, size, size); |
if (rc != EOK) { |
free(bb_buf); |
return EIO; /* XXX real error code */ |
return rc; |
} |
devcon->bb_buf = bb_buf; |
devcon->bb_off = off; |
219,9 → 221,9 |
* @param size Size of the destination buffer. |
* @param block_size Block size to be used for the transfer. |
* |
* @return True on success, false on failure. |
* @return EOK on success or a negative return code on failure. |
*/ |
bool |
int |
block_read(int dev_handle, off_t *bufpos, size_t *buflen, off_t *pos, void *dst, |
size_t size, size_t block_size) |
{ |
256,7 → 258,7 |
int rc = async_req_2_1(devcon->dev_phone, RD_READ_BLOCK, |
*pos / block_size, block_size, &retval); |
if ((rc != EOK) || (retval != EOK)) |
return false; |
return (rc != EOK ? rc : retval); |
*bufpos = 0; |
*buflen = block_size; |
263,7 → 265,7 |
} |
} |
return true; |
return EOK; |
} |
block_t *block_get(dev_handle_t dev_handle, off_t offset, size_t bs) |
285,8 → 287,8 |
} |
b->size = bs; |
if (!block_read(dev_handle, &bufpos, &buflen, &pos, b->data, |
bs, bs)) { |
if (block_read(dev_handle, &bufpos, &buflen, &pos, b->data, |
bs, bs) != EOK) { |
free(b->data); |
free(b); |
return NULL; |
/trunk/uspace/lib/libblock/libblock.h |
---|
76,7 → 76,7 |
extern block_t *block_get(dev_handle_t, off_t, size_t); |
extern void block_put(block_t *); |
extern bool block_read(int, off_t *, size_t *, off_t *, void *, size_t, size_t); |
extern int block_read(int, off_t *, size_t *, off_t *, void *, size_t, size_t); |
#endif |
/trunk/uspace/srv/fs/tmpfs/tmpfs_dump.c |
---|
65,8 → 65,8 |
tmpfs_dentry_t *node; |
uint32_t size; |
if (!block_read(dev, bufpos, buflen, pos, &entry, sizeof(entry), |
TMPFS_BLOCK_SIZE)) |
if (block_read(dev, bufpos, buflen, pos, &entry, sizeof(entry), |
TMPFS_BLOCK_SIZE) != EOK) |
return false; |
entry.len = uint32_t_le2host(entry.len); |
85,8 → 85,8 |
return false; |
} |
if (!block_read(dev, bufpos, buflen, pos, fname, |
entry.len, TMPFS_BLOCK_SIZE)) { |
if (block_read(dev, bufpos, buflen, pos, fname, |
entry.len, TMPFS_BLOCK_SIZE) != EOK) { |
ops->destroy((void *) node); |
free(fname); |
return false; |
100,8 → 100,8 |
} |
free(fname); |
if (!block_read(dev, bufpos, buflen, pos, &size, |
sizeof(size), TMPFS_BLOCK_SIZE)) |
if (block_read(dev, bufpos, buflen, pos, &size, |
sizeof(size), TMPFS_BLOCK_SIZE) != EOK) |
return false; |
size = uint32_t_le2host(size); |
111,8 → 111,8 |
return false; |
node->size = size; |
if (!block_read(dev, bufpos, buflen, pos, node->data, |
size, TMPFS_BLOCK_SIZE)) |
if (block_read(dev, bufpos, buflen, pos, node->data, |
size, TMPFS_BLOCK_SIZE) != EOK) |
return false; |
break; |
127,8 → 127,8 |
return false; |
} |
if (!block_read(dev, bufpos, buflen, pos, |
fname, entry.len, TMPFS_BLOCK_SIZE)) { |
if (block_read(dev, bufpos, buflen, pos, fname, |
entry.len, TMPFS_BLOCK_SIZE) != EOK) { |
ops->destroy((void *) node); |
free(fname); |
return false; |
169,8 → 169,8 |
off_t pos = 0; |
char tag[6]; |
if (!block_read(dev, &bufpos, &buflen, &pos, tag, 5, |
TMPFS_BLOCK_SIZE)) |
if (block_read(dev, &bufpos, &buflen, &pos, tag, 5, |
TMPFS_BLOCK_SIZE) != EOK) |
goto error; |
tag[5] = 0; |