Changeset d2c1fd5 in mainline for uspace/lib/libfs/libfs.c
- Timestamp:
- 2008-08-07T19:01:24Z (17 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 61bc901
- Parents:
- 9f429c0
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/libfs/libfs.c
r9f429c0 rd2c1fd5 331 331 } 332 332 333 #define RD_BASE 1024 // FIXME 334 #define RD_READ_BLOCK (RD_BASE + 1) 335 336 bool libfs_blockread(int phone, void *buffer, size_t *bufpos, size_t *buflen, 337 size_t *pos, void *dst, size_t size, size_t block_size) 338 { 339 size_t offset = 0; 340 size_t left = size; 341 342 while (left > 0) { 343 size_t rd; 344 345 if (*bufpos + left < *buflen) 346 rd = left; 347 else 348 rd = *buflen - *bufpos; 349 350 if (rd > 0) { 351 memcpy(dst + offset, buffer + *bufpos, rd); 352 offset += rd; 353 *bufpos += rd; 354 *pos += rd; 355 left -= rd; 356 } 357 358 if (*bufpos == *buflen) { 359 ipcarg_t retval; 360 int rc = async_req_2_1(phone, RD_READ_BLOCK, 361 *pos / block_size, block_size, &retval); 362 if ((rc != EOK) || (retval != EOK)) 363 return false; 364 365 *bufpos = 0; 366 *buflen = block_size; 367 } 368 } 369 370 return true; 371 } 372 333 373 /** @} 334 374 */
Note:
See TracChangeset
for help on using the changeset viewer.