Changeset 1d8cdb1 in mainline for uspace/lib
- Timestamp:
- 2008-11-18T20:28:17Z (17 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 18c485a
- Parents:
- 26fa0f9f
- Location:
- uspace/lib/libblock
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/libblock/libblock.c
r26fa0f9f r1d8cdb1 297 297 * @param dev_handle Device handle of the block device. 298 298 * @param boff Block offset. 299 * @param flags If BLOCK_FLAGS_NOREAD is specified, block_get() 300 * will not read the contents of the block from the 301 * device. 299 302 * 300 303 * @return Block structure. 301 304 */ 302 block_t *block_get(dev_handle_t dev_handle, bn_t boff )305 block_t *block_get(dev_handle_t dev_handle, bn_t boff, int flags) 303 306 { 304 307 devcon_t *devcon; … … 386 389 abort(); /* TODO: block_write() */ 387 390 } 388 /* 389 * The block contains old or no data. We need to read the new 390 * contents from the device. 391 */ 392 rc = block_read(dev_handle, &bufpos, &buflen, &pos, b->data, 393 cache->block_size, cache->block_size); 394 assert(rc == EOK); 391 if (!(flags & BLOCK_FLAGS_NOREAD)) { 392 /* 393 * The block contains old or no data. We need to read 394 * the new contents from the device. 395 */ 396 rc = block_read(dev_handle, &bufpos, &buflen, &pos, 397 b->data, cache->block_size, cache->block_size); 398 assert(rc == EOK); 399 } 395 400 396 401 futex_up(&b->lock); -
uspace/lib/libblock/libblock.h
r26fa0f9f r1d8cdb1 45 45 #include <libadt/list.h> 46 46 47 /* 48 * Flags that can be used with block_get(). 49 */ 50 51 /** 52 * This macro is a symbolic value for situations where no special flags are 53 * needed. 54 */ 55 #define BLOCK_FLAGS_NONE 0 56 57 /** 58 * When the client of block_get() intends to overwrite the current contents of 59 * the block, this flag is used to avoid the unnecessary read. 60 */ 61 #define BLOCK_FLAGS_NOREAD 1 62 47 63 typedef unsigned bn_t; /**< Block number type. */ 48 64 … … 78 94 extern int block_cache_init(dev_handle_t, size_t, unsigned); 79 95 80 extern block_t *block_get(dev_handle_t, bn_t );96 extern block_t *block_get(dev_handle_t, bn_t, int flags); 81 97 extern void block_put(block_t *); 82 98
Note:
See TracChangeset
for help on using the changeset viewer.