xref: /plan9/sys/src/cmd/cfs/bcache.h (revision 9a747e4fd48b9f4522c70c07e8f882a15030f964)
13e12c5d1SDavid du Colombier typedef struct Bbuf	Bbuf;
23e12c5d1SDavid du Colombier typedef struct Bcache	Bcache;
33e12c5d1SDavid du Colombier 
43e12c5d1SDavid du Colombier enum
53e12c5d1SDavid du Colombier {
63e12c5d1SDavid du Colombier 	Nbcache=	32,		/* number of blocks kept in pool */
73e12c5d1SDavid du Colombier };
83e12c5d1SDavid du Colombier 
93e12c5d1SDavid du Colombier /*
103e12c5d1SDavid du Colombier  *  block cache descriptor
113e12c5d1SDavid du Colombier  */
123e12c5d1SDavid du Colombier struct Bbuf
133e12c5d1SDavid du Colombier {
143e12c5d1SDavid du Colombier 	Lru;				/* must be first in struct */
153e12c5d1SDavid du Colombier 	ulong	bno;
163e12c5d1SDavid du Colombier 	int	inuse;
173e12c5d1SDavid du Colombier 	Bbuf	*next;			/* next in dirty list */
183e12c5d1SDavid du Colombier 	int	dirty;
193e12c5d1SDavid du Colombier 	char	*data;
203e12c5d1SDavid du Colombier };
213e12c5d1SDavid du Colombier 
223e12c5d1SDavid du Colombier /*
233e12c5d1SDavid du Colombier  *  the buffer cache
243e12c5d1SDavid du Colombier  */
253e12c5d1SDavid du Colombier struct Bcache
263e12c5d1SDavid du Colombier {
273e12c5d1SDavid du Colombier 	Lru;
283e12c5d1SDavid du Colombier 	int	bsize;			/* block size in bytes */
293e12c5d1SDavid du Colombier 	int	f;			/* fd to disk */
303e12c5d1SDavid du Colombier 	Bbuf	*dfirst;		/* dirty list */
313e12c5d1SDavid du Colombier 	Bbuf	*dlast;
323e12c5d1SDavid du Colombier 	Bbuf	bb[Nbcache];
333e12c5d1SDavid du Colombier };
343e12c5d1SDavid du Colombier 
353e12c5d1SDavid du Colombier int	bcinit(Bcache*, int, int);
363e12c5d1SDavid du Colombier Bbuf*	bcalloc(Bcache*, ulong);
373e12c5d1SDavid du Colombier Bbuf*	bcread(Bcache*, ulong);
383e12c5d1SDavid du Colombier void	bcmark(Bcache*, Bbuf*);
393e12c5d1SDavid du Colombier int	bcwrite(Bcache*, Bbuf*);
403e12c5d1SDavid du Colombier int	bcsync(Bcache*);
413e12c5d1SDavid du Colombier int	bread(Bcache*, ulong, void*);
423e12c5d1SDavid du Colombier int	bwrite(Bcache*, ulong, void*);
433e12c5d1SDavid du Colombier int	bref(Bcache*, Bbuf*);
44*9a747e4fSDavid du Colombier void	error(char*, ...);
453e12c5d1SDavid du Colombier void	warning(char*);
46