nuclear@90: #ifndef BDEV_H_ nuclear@90: #define BDEV_H_ nuclear@90: nuclear@90: #include "fs.h" /* for dev_t */ nuclear@90: nuclear@90: /* TODO buffer cache */ nuclear@90: nuclear@90: struct block_device { nuclear@90: int ata_dev; nuclear@90: uint32_t offset, size; nuclear@93: nuclear@93: /* Partition type (if the blkdev is a partition), otherwise 0. nuclear@93: * Used as just an extra sanity check to make sure we don't nuclear@93: * try to mount the wrong filesystem. nuclear@93: */ nuclear@93: int ptype; nuclear@90: }; nuclear@90: nuclear@90: struct block_device *blk_open(dev_t dev); nuclear@90: void blk_close(struct block_device *bdev); nuclear@90: nuclear@93: int blk_read(struct block_device *bdev, uint32_t blk, int count, void *buf); nuclear@93: int blk_write(struct block_device *bdev, uint32_t blk, int count, void *buf); nuclear@90: nuclear@91: dev_t bdev_by_name(const char *name); nuclear@91: nuclear@90: #endif /* BDEV_H_ */