Subversion Repositories planix.SVN

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | RSS feed

typedef struct Bbuf     Bbuf;
typedef struct Bcache   Bcache;

enum
{
        Nbcache=        32,             /* number of blocks kept in pool */
};

/*
 *  block cache descriptor
 */
struct Bbuf
{
        Lru;                            /* must be first in struct */
        ulong   bno;
        int     inuse;
        Bbuf    *next;                  /* next in dirty list */
        int     dirty;
        char    *data;
};

/*
 *  the buffer cache
 */
struct Bcache
{
        Lru;
        int     bsize;                  /* block size in bytes */
        int     f;                      /* fd to disk */
        Bbuf    *dfirst;                /* dirty list */
        Bbuf    *dlast;
        Bbuf    bb[Nbcache];
};

int     bcinit(Bcache*, int, int);
Bbuf*   bcalloc(Bcache*, ulong);
Bbuf*   bcread(Bcache*, ulong);
void    bcmark(Bcache*, Bbuf*);
int     bcwrite(Bcache*, Bbuf*);
int     bcsync(Bcache*);
int     bread(Bcache*, ulong, void*);
int     bwrite(Bcache*, ulong, void*);
int     bref(Bcache*, Bbuf*);
void    error(char*, ...);
void    warning(char*);