Changeset d2c1fd5 in mainline for uspace/lib/libfs/libfs.c


Ignore:
Timestamp:
2008-08-07T19:01:24Z (17 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
61bc901
Parents:
9f429c0
Message:

Move tmpfs_blockread() to libfs and rename it to libfs_blockread().
Add one argument to specify block size.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/libfs/libfs.c

    r9f429c0 rd2c1fd5  
    331331}
    332332
     333#define RD_BASE         1024    // FIXME
     334#define RD_READ_BLOCK   (RD_BASE + 1)
     335
     336bool 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
    333373/** @}
    334374 */
Note: See TracChangeset for help on using the changeset viewer.