From 150499dbea44a4ecf1689990ed915467a14abb02 Mon Sep 17 00:00:00 2001 From: Carlos Maiolino Date: Tue, 24 Feb 2026 21:12:39 +0100 Subject: block: Add a simple block layer Signed-off-by: Carlos Maiolino --- src/block/block.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/block/block.c (limited to 'src/block') diff --git a/src/block/block.c b/src/block/block.c new file mode 100644 index 0000000..d4758f5 --- /dev/null +++ b/src/block/block.c @@ -0,0 +1,44 @@ +#include +#include +#include +#include + +/* + * Only primary ATA disk is supported by now, just + * hardcode it here. + */ +struct bdev hda; + +/* Init block layer */ +void +block_init() +{ + memset(&hda, 0, sizeof(struct bdev)); + hda.id = TOXIC_HDA_0; + hda.sector_size = SECTOR_SIZE; +} + +struct bdev * +bdev_get(int id) +{ + /* Just a single bdev is supported */ + if (id) + return NULL; + + return &hda; +} + +/* Read len bytes from bdev starting at addr into buf*/ +int +bread( + struct bdev *bdev, + unsigned int addr, + unsigned int len, + void *buf) +{ + /* + * XXX: This should be a function call into the disk driver. + * i.e. bdev->read(), or something like that + */ + return ata_read_sector(addr, len, buf); +} -- cgit v1.2.3