Rev 4509 | Rev 4572 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4509 | Rev 4553 | ||
---|---|---|---|
Line 37... | Line 37... | ||
37 | #ifndef LIBBLOCK_LIBBLOCK_H_ |
37 | #ifndef LIBBLOCK_LIBBLOCK_H_ |
38 | #define LIBBLOCK_LIBBLOCK_H_ |
38 | #define LIBBLOCK_LIBBLOCK_H_ |
39 | 39 | ||
40 | #include <stdint.h> |
40 | #include <stdint.h> |
41 | #include "../../srv/vfs/vfs.h" |
41 | #include "../../srv/vfs/vfs.h" |
42 | #include <futex.h> |
- | |
43 | #include <rwlock.h> |
42 | #include <fibril_sync.h> |
44 | #include <adt/hash_table.h> |
43 | #include <adt/hash_table.h> |
45 | #include <adt/list.h> |
44 | #include <adt/list.h> |
46 | 45 | ||
47 | /* |
46 | /* |
48 | * Flags that can be used with block_get(). |
47 | * Flags that can be used with block_get(). |
Line 61... | Line 60... | ||
61 | #define BLOCK_FLAGS_NOREAD 1 |
60 | #define BLOCK_FLAGS_NOREAD 1 |
62 | 61 | ||
63 | typedef unsigned bn_t; /**< Block number type. */ |
62 | typedef unsigned bn_t; /**< Block number type. */ |
64 | 63 | ||
65 | typedef struct block { |
64 | typedef struct block { |
66 | /** Futex protecting the reference count. */ |
65 | /** Mutex protecting the reference count. */ |
67 | futex_t lock; |
66 | fibril_mutex_t lock; |
68 | /** Number of references to the block_t structure. */ |
67 | /** Number of references to the block_t structure. */ |
69 | unsigned refcnt; |
68 | unsigned refcnt; |
70 | /** If true, the block needs to be written back to the block device. */ |
69 | /** If true, the block needs to be written back to the block device. */ |
71 | bool dirty; |
70 | bool dirty; |
72 | /** Readers / Writer lock protecting the contents of the block. */ |
71 | /** Readers / Writer lock protecting the contents of the block. */ |
73 | rwlock_t contents_lock; |
72 | fibril_rwlock_t contents_lock; |
74 | /** Handle of the device where the block resides. */ |
73 | /** Handle of the device where the block resides. */ |
75 | dev_handle_t dev_handle; |
74 | dev_handle_t dev_handle; |
76 | /** Block offset on the block device. Counted in 'size'-byte blocks. */ |
75 | /** Block offset on the block device. Counted in 'size'-byte blocks. */ |
77 | bn_t boff; |
76 | bn_t boff; |
78 | /** Size of the block. */ |
77 | /** Size of the block. */ |