1/*
2	Copyright 1999-2001, Be Incorporated.   All Rights Reserved.
3	This file may be used under the terms of the Be Sample Code License.
4*/
5
6#ifndef _CACHE_H_
7#define _CACHE_H_
8
9#include <BeBuild.h>
10
11#define ALLOW_WRITES  1
12#define NO_WRITES     0
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
18extern int   init_block_cache(int max_blocks, int flags);
19extern void  shutdown_block_cache(void);
20
21extern void  force_cache_flush(int dev, int prefer_log_blocks);
22extern int   flush_blocks(int dev, off_t bnum, int nblocks);
23extern int   flush_device(int dev, int warn_locked);
24
25extern int   init_cache_for_device(int fd, off_t max_blocks);
26extern int   remove_cached_device_blocks(int dev, int allow_write);
27
28extern void *get_block(int dev, off_t bnum, int bsize);
29extern void *get_empty_block(int dev, off_t bnum, int bsize);
30extern int   release_block(int dev, off_t bnum);
31extern int   mark_blocks_dirty(int dev, off_t bnum, int nblocks);
32
33
34extern int  cached_read(int dev, off_t bnum, void *data, off_t num_blocks, int bsize);
35extern int  cached_write(int dev, off_t bnum, const void *data,
36				off_t num_blocks, int bsize);
37extern int  cached_write_locked(int dev, off_t bnum, const void *data,
38				off_t num_blocks, int bsize);
39extern int  set_blocks_info(int dev, off_t *blocks, int nblocks,
40				void (*func)(off_t bnum, size_t nblocks, void *arg),
41				void *arg);
42
43extern size_t read_phys_blocks (int fd, off_t bnum, void *data, uint num_blocks, int bsize);
44extern size_t write_phys_blocks(int fd, off_t bnum, void *data, uint num_blocks, int bsize);
45
46#ifdef __cplusplus
47}
48#endif
49
50#endif /* _CACHE_H_ */
51