Rev 3521 | Rev 3530 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 3521 | Rev 3527 | ||
|---|---|---|---|
| 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> |
|
| - | 44 | #include <libadt/hash_table.h> |
|
| - | 45 | #include <libadt/list.h> |
|
| 42 | 46 | ||
| 43 | typedef struct block { |
47 | typedef struct block { |
| - | 48 | /** Futex protecting the reference count. */ |
|
| 44 | void *data; |
49 | futex_t lock; |
| - | 50 | /** Number of references to the block_t structure. */ |
|
| 45 | size_t size; |
51 | unsigned refcnt; |
| - | 52 | /** If true, the block needs to be written back to the block device. */ |
|
| 46 | bool dirty; |
53 | bool dirty; |
| - | 54 | /** Readers / Writer lock protecting the contents of the block. */ |
|
| - | 55 | rwlock_t contents_lock; |
|
| - | 56 | /** Handle of the device where the block resides. */ |
|
| - | 57 | dev_handle_t dev_handle; |
|
| - | 58 | /** Block offset on the block device. Counted in 'size'-byte blocks. */ |
|
| - | 59 | off_t boff; |
|
| - | 60 | /** Size of the block. */ |
|
| - | 61 | size_t size; |
|
| - | 62 | /** Link for placing the block into the free block list. */ |
|
| - | 63 | link_t free_link; |
|
| - | 64 | /** Link for placing the block into the block hash table. */ |
|
| - | 65 | link_t hash_link; |
|
| - | 66 | /** Buffer with the block data. */ |
|
| - | 67 | void *data; |
|
| 47 | } block_t; |
68 | } block_t; |
| 48 | 69 | ||
| 49 | extern int dev_phone; /* FIXME */ |
70 | extern int dev_phone; /* FIXME */ |
| 50 | extern void *dev_buffer; /* FIXME */ |
71 | extern void *dev_buffer; /* FIXME */ |
| 51 | 72 | ||