xref: /plan9/sys/src/cmd/cfs/bcache.h (revision 9a747e4fd48b9f4522c70c07e8f882a15030f964)
1 typedef struct Bbuf	Bbuf;
2 typedef struct Bcache	Bcache;
3 
4 enum
5 {
6 	Nbcache=	32,		/* number of blocks kept in pool */
7 };
8 
9 /*
10  *  block cache descriptor
11  */
12 struct Bbuf
13 {
14 	Lru;				/* must be first in struct */
15 	ulong	bno;
16 	int	inuse;
17 	Bbuf	*next;			/* next in dirty list */
18 	int	dirty;
19 	char	*data;
20 };
21 
22 /*
23  *  the buffer cache
24  */
25 struct Bcache
26 {
27 	Lru;
28 	int	bsize;			/* block size in bytes */
29 	int	f;			/* fd to disk */
30 	Bbuf	*dfirst;		/* dirty list */
31 	Bbuf	*dlast;
32 	Bbuf	bb[Nbcache];
33 };
34 
35 int	bcinit(Bcache*, int, int);
36 Bbuf*	bcalloc(Bcache*, ulong);
37 Bbuf*	bcread(Bcache*, ulong);
38 void	bcmark(Bcache*, Bbuf*);
39 int	bcwrite(Bcache*, Bbuf*);
40 int	bcsync(Bcache*);
41 int	bread(Bcache*, ulong, void*);
42 int	bwrite(Bcache*, ulong, void*);
43 int	bref(Bcache*, Bbuf*);
44 void	error(char*, ...);
45 void	warning(char*);
46