#ifndef __BLOCK_H #define __BLOCK_H #include struct block_device; struct block_device_ops { int (*read)(struct block_device *, void *buf, int block, int num_blocks); int (*write)(struct block_device *, const void *buf, int block, int num_blocks); }; struct block_device { struct device_d *dev; struct block_device_ops *ops; int blockbits; int num_blocks; void *rdbuf; /* read buffer */ int rdbufsize; int rdblock; /* start block in read buffer */ int rdblockend; /* end block in read buffer */ void *wrbuf; /* write buffer */ int wrblock; /* start block in write buffer */ int wrbufblocks; /* number of blocks currently in write buffer */ int wrbufsize; /* size of write buffer in blocks */ struct cdev cdev; }; int blockdevice_register(struct block_device *blk); int blockdevice_unregister(struct block_device *blk); #endif /* __BLOCK_H */