-#include <hal/ahci/hba.h>
#include <klibc/stdio.h>
#include <klibc/string.h>
+
+#include <hal/ahci/hba.h>
+
#include <lib/crc.h>
+
+#include <lunaix/blkpart_gpt.h>
#include <lunaix/block.h>
#include <lunaix/fs/twifs.h>
#include <lunaix/mm/cake.h>
+#include <lunaix/mm/page.h>
#include <lunaix/mm/valloc.h>
-#include <lunaix/syslog.h>
-
-#include <lunaix/blkpart_gpt.h>
-
#include <lunaix/spike.h>
+#include <lunaix/syslog.h>
#define BLOCK_EREAD 1
#define BLOCK_ESIG 2
static struct cake_pile* lbd_pile;
static struct block_dev** dev_registry;
static struct twifs_node* blk_sysroot;
+static struct device* blk_parent_dev;
int free_slot = 0;
dev_registry = vcalloc(sizeof(struct block_dev*), MAX_DEV);
free_slot = 0;
blk_sysroot = twifs_dir_node(NULL, "block");
+ blk_parent_dev = device_addcat(NULL, "block");
}
int
return 0;
}
- struct device* dev = device_addvol(NULL, bdev, "sd%c", 'a' + free_slot);
- dev->write = __block_write;
- dev->write_page = __block_write_page;
- dev->read = __block_read;
- dev->read_page = __block_read_page;
+ struct device* dev =
+ device_addvol(blk_parent_dev, bdev, "sd%c", 'a' + free_slot);
+ dev->ops.write = __block_write;
+ dev->ops.write_page = __block_write_page;
+ dev->ops.read = __block_read;
+ dev->ops.read_page = __block_read_page;
bdev->dev = dev;
strcpy(bdev->bdev_id, dev->name_val);
struct device* dev =
device_addvol(NULL, pbdev, "%sp%d", bdev->bdev_id, index + 1);
- dev->write = __block_write;
- dev->write_page = __block_write_page;
- dev->read = __block_read;
- dev->read_page = __block_read_page;
+ dev->ops.write = __block_write;
+ dev->ops.write_page = __block_write_page;
+ dev->ops.read = __block_read;
+ dev->ops.read_page = __block_read_page;
pbdev->start_lba = start_lba;
pbdev->end_lba = end_lba;