/* public interfaces for block io routines */ #ifndef _BLOCK_H #define _BLOCK_H /*#define IBEX_STATS*/ /* define to get/dump block access stats */ #include typedef guint32 nameid_t; typedef guint32 blockid_t; #define BLOCK_BITS (8) #define BLOCK_SIZE (1<memblock mapping */ int fd; /* file fd */ int flags; /* flags (mirror of root->flags) */ #ifdef IBEX_STATS GHashTable *stats; #endif /* temporary here */ struct _IBEXWord *words; /* word index */ }; #ifdef IBEX_STATS struct _stat_info { int read; int write; int cache_hit; int cache_miss; }; #endif /* IBEX_STATS */ struct _memcache *ibex_block_cache_open(const char *name, int flags, int mode); void ibex_block_cache_close(struct _memcache *block_cache); void ibex_block_cache_sync(struct _memcache *block_cache); void ibex_block_cache_flush(struct _memcache *block_cache); blockid_t ibex_block_get(struct _memcache *block_cache); void ibex_block_free(struct _memcache *block_cache, blockid_t blockid); void ibex_block_dirty(struct _block *block); struct _block *ibex_block_read(struct _memcache *block_cache, blockid_t blockid); #define block_number(x) ((x)>>BLOCK_BITS) #define block_location(x) ((x)<