Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 3538 → Rev 3537

/trunk/uspace/lib/libblock/libblock.c
176,7 → 176,6
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)
189,11 → 188,10
off_t bufpos = 0;
size_t buflen = 0;
rc = block_read(dev_handle, &bufpos, &buflen, &off,
bb_buf, size, size);
if (rc != EOK) {
if (!block_read(dev_handle, &bufpos, &buflen, &off,
bb_buf, size, size)) {
free(bb_buf);
return rc;
return EIO; /* XXX real error code */
}
devcon->bb_buf = bb_buf;
devcon->bb_off = off;
221,9 → 219,9
* @param size Size of the destination buffer.
* @param block_size Block size to be used for the transfer.
*
* @return EOK on success or a negative return code on failure.
* @return True on success, false on failure.
*/
int
bool
block_read(int dev_handle, off_t *bufpos, size_t *buflen, off_t *pos, void *dst,
size_t size, size_t block_size)
{
258,7 → 256,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 (rc != EOK ? rc : retval);
return false;
*bufpos = 0;
*buflen = block_size;
265,7 → 263,7
}
}
return EOK;
return true;
}
 
block_t *block_get(dev_handle_t dev_handle, off_t offset, size_t bs)
287,8 → 285,8
}
b->size = bs;
 
if (block_read(dev_handle, &bufpos, &buflen, &pos, b->data,
bs, bs) != EOK) {
if (!block_read(dev_handle, &bufpos, &buflen, &pos, b->data,
bs, bs)) {
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 int block_read(int, off_t *, size_t *, off_t *, void *, size_t, size_t);
extern bool block_read(int, off_t *, size_t *, off_t *, void *, size_t, size_t);
 
#endif